60806040526000801b6006557f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9296007553480156200003c57600080fd5b50604051620047af380380620047af833981810160405281019062000062919062000753565b828273ffffffffffffffffffffffffffffffffffffffff1663d974b4e26040518060400160405280600481526020017f55534454000000000000000000000000000000000000000000000000000000008152506040518263ffffffff1660e01b8152600401620000d3919062000962565b60206040518083038186803b158015620000ec57600080fd5b505afa15801562000101573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000127919062000727565b8373ffffffffffffffffffffffffffffffffffffffff1663d974b4e26040518060400160405280600481526020017f55534454000000000000000000000000000000000000000000000000000000008152506040518263ffffffff1660e01b815260040162000197919062000962565b60206040518083038186803b158015620001b057600080fd5b505afa158015620001c5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001eb919062000727565b73ffffffffffffffffffffffffffffffffffffffff166306fdde036040518163ffffffff1660e01b815260040160006040518083038186803b1580156200023157600080fd5b505afa15801562000246573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190620002719190620007a9565b6040516020016200028391906200093c565b6040516020818303038152906040528473ffffffffffffffffffffffffffffffffffffffff1663d974b4e26040518060400160405280600481526020017f55534454000000000000000000000000000000000000000000000000000000008152506040518263ffffffff1660e01b815260040162000302919062000962565b60206040518083038186803b1580156200031b57600080fd5b505afa15801562000330573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000356919062000727565b73ffffffffffffffffffffffffffffffffffffffff166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b1580156200039c57600080fd5b505afa158015620003b1573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190620003dc9190620007a9565b604051602001620003ee919062000916565b604051602081830303815290604052848282816003908051906020019062000418929190620005d1565b50806004908051906020019062000431929190620005d1565b506012600560006101000a81548160ff021916908360ff160217905550505080600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505083600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620005658373ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156200051e57600080fd5b505afa15801562000533573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005599190620007ee565b620005b360201b60201c565b82600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050505062000ad2565b80600560006101000a81548160ff021916908360ff16021790555050565b828054600181600116156101000203166002900490600052602060002090601f01602090048101928262000609576000855562000655565b82601f106200062457805160ff191683800117855562000655565b8280016001018555821562000655579182015b828111156200065457825182559160200191906001019062000637565b5b50905062000664919062000668565b5090565b5b808211156200068357600081600090555060010162000669565b5090565b60006200069e6200069884620009ba565b62000986565b905082815260208101848484011115620006b757600080fd5b620006c484828562000a55565b509392505050565b600081519050620006dd8162000a9e565b92915050565b600082601f830112620006f557600080fd5b81516200070784826020860162000687565b91505092915050565b600081519050620007218162000ab8565b92915050565b6000602082840312156200073a57600080fd5b60006200074a84828501620006cc565b91505092915050565b6000806000606084860312156200076957600080fd5b60006200077986828701620006cc565b93505060206200078c86828701620006cc565b92505060406200079f86828701620006cc565b9150509250925092565b600060208284031215620007bc57600080fd5b600082015167ffffffffffffffff811115620007d757600080fd5b620007e584828501620006e3565b91505092915050565b6000602082840312156200080157600080fd5b6000620008118482850162000710565b91505092915050565b60006200082782620009ed565b620008338185620009f8565b93506200084581856020860162000a55565b620008508162000a8d565b840191505092915050565b60006200086882620009ed565b62000874818562000a09565b93506200088681856020860162000a55565b80840191505092915050565b6000620008a160038362000a09565b91507f63686600000000000000000000000000000000000000000000000000000000006000830152600382019050919050565b6000620008e360068362000a09565b91507f63686672792000000000000000000000000000000000000000000000000000006000830152600682019050919050565b6000620009238262000892565b91506200093182846200085b565b915081905092915050565b60006200094982620008d4565b91506200095782846200085b565b915081905092915050565b600060208201905081810360008301526200097e81846200081a565b905092915050565b6000604051905081810181811067ffffffffffffffff82111715620009b057620009af62000a8b565b5b8060405250919050565b600067ffffffffffffffff821115620009d857620009d762000a8b565b5b601f19601f8301169050602081019050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600062000a218262000a28565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600060ff82169050919050565b60005b8381101562000a7557808201518184015260208101905062000a58565b8381111562000a85576000848401525b50505050565bfe5b6000601f19601f8301169050919050565b62000aa98162000a14565b811462000ab557600080fd5b50565b62000ac38162000a48565b811462000acf57600080fd5b50565b613ccd8062000ae26000396000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c8063929bc19c11610104578063c77ef9b8116100a2578063e179a59c11610071578063e179a59c1461054f578063f5b541a61461056d578063f77c47911461058b578063fc0c546a146105a9576101da565b8063c77ef9b8146104ef578063d389800f1461050b578063dd62ed3e14610515578063de5f626814610545576101da565b8063a457c2d7116100de578063a457c2d714610455578063a9059cbb14610485578063b69ef8a8146104b5578063b6b55f25146104d3576101da565b8063929bc19c146103fd57806392eefe9b1461041b57806395d89b4114610437576101da565b8063313ce5671161017c57806370a082311161014b57806370a082311461035b57806375b238fc1461038b57806377c7b8fc146103a95780638d48a196146103c7576101da565b8063313ce567146102d357806339509351146102f15780633ded5a341461032157806348a0d7541461033d576101da565b806318160ddd116101b857806318160ddd1461024b57806323b872dd146102695780632451b3d8146102995780632e1a7d4d146102b7576101da565b806306fdde03146101df578063095ea7b3146101fd578063172fd9951461022d575b600080fd5b6101e76105c7565b6040516101f491906137a0565b60405180910390f35b61021760048036038101906102129190612ecd565b610669565b604051610224919061370b565b60405180910390f35b610235610687565b604051610242919061370b565b60405180910390f35b6102536107f3565b60405161026091906139c2565b60405180910390f35b610283600480360381019061027e9190612e03565b6107fd565b604051610290919061370b565b60405180910390f35b6102a16108d6565b6040516102ae919061376a565b60405180910390f35b6102d160048036038101906102cc9190612f32565b6108fc565b005b6102db610c7e565b6040516102e891906139dd565b60405180910390f35b61030b60048036038101906103069190612ecd565b610c95565b604051610318919061370b565b60405180910390f35b61033b60048036038101906103369190612e52565b610d48565b005b610345610dcc565b60405161035291906139c2565b60405180910390f35b61037560048036038101906103709190612d9e565b610e7e565b60405161038291906139c2565b60405180910390f35b610393610ec6565b6040516103a09190613726565b60405180910390f35b6103b1610ecc565b6040516103be91906139c2565b60405180910390f35b6103e160048036038101906103dc9190612f32565b610f27565b6040516103f49796959493929190613635565b60405180910390f35b610405611071565b604051610412919061370b565b60405180910390f35b61043560048036038101906104309190612d9e565b611127565b005b61043f6111eb565b60405161044c91906137a0565b60405180910390f35b61046f600480360381019061046a9190612ecd565b61128d565b60405161047c919061370b565b60405180910390f35b61049f600480360381019061049a9190612ecd565b61135a565b6040516104ac919061370b565b60405180910390f35b6104bd611378565b6040516104ca91906139c2565b60405180910390f35b6104ed60048036038101906104e89190612f32565b611508565b005b61050960048036038101906105049190612d9e565b61155b565b005b61051361161f565b005b61052f600480360381019061052a9190612dc7565b611670565b60405161053c91906139c2565b60405180910390f35b61054d6116f7565b005b6105576117f3565b604051610564919061370b565b60405180910390f35b6105756118a9565b6040516105829190613726565b60405180910390f35b6105936118af565b6040516105a091906135ad565b60405180910390f35b6105b16118d5565b6040516105be9190613785565b60405180910390f35b606060038054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561065f5780601f106106345761010080835404028352916020019161065f565b820191906000526020600020905b81548152906001019060200180831161064257829003601f168201915b5050505050905090565b600061067d6106766118fb565b8484611903565b6001905092915050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166391d14854600754336040518363ffffffff1660e01b81526004016106e8929190613741565b60206040518083038186803b15801561070057600080fd5b505afa158015610714573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107389190612f09565b806107ee5750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166391d14854600654336040518363ffffffff1660e01b815260040161079d929190613741565b60206040518083038186803b1580156107b557600080fd5b505afa1580156107c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ed9190612f09565b5b905090565b6000600254905090565b600061080a848484611ace565b6108cb846108166118fb565b6108c685604051806060016040528060288152602001613c4b60289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061087c6118fb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d639092919063ffffffff16565b611903565b600190509392505050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6109046117f3565b610943576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093a90613962565b60405180910390fd5b61094b611db8565b60006109806109586107f3565b61097284610964611378565b611e6990919063ffffffff16565b611ed990919063ffffffff16565b905061098c3383611f2f565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016109e991906135ad565b60206040518083038186803b158015610a0157600080fd5b505afa158015610a15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a399190612f5b565b905081811015610bf3576000610a5882846120dd90919063ffffffff16565b9050600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f3fef3a3600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610ad99291906136e2565b600060405180830381600087803b158015610af357600080fd5b505af1158015610b07573d6000803e3d6000fd5b505050506000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610b6891906135ad565b60206040518083038186803b158015610b8057600080fd5b505afa158015610b94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bb89190612f5b565b90506000610bcf84836120dd90919063ffffffff16565b905082811015610bef57610bec818561212d90919063ffffffff16565b94505b5050505b610c403383600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166121829092919063ffffffff16565b7f0ac60fbf53b67f5a6a0c8031dd9d1610a06f01669b1a8b9af98f3a6a477e8d7c3383604051610c7192919061360c565b60405180910390a1505050565b6000600560009054906101000a900460ff16905090565b6000610d3e610ca26118fb565b84610d398560016000610cb36118fb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461212d90919063ffffffff16565b611903565b6001905092915050565b610d50611071565b610d8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d86906137c2565b60405180910390fd5b610d9b84848484612208565b610dc683838673ffffffffffffffffffffffffffffffffffffffff166121829092919063ffffffff16565b50505050565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610e2991906135ad565b60206040518083038186803b158015610e4157600080fd5b505afa158015610e55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e799190612f5b565b905090565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60065481565b600080610ed76107f3565b1415610ee65760009050610f24565b610f21610ef16107f3565b610f13670de0b6b3a7640000610f05611378565b611e6990919063ffffffff16565b611ed990919063ffffffff16565b90505b90565b600b8181548110610f3757600080fd5b90600052602060002090600702016000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806003015490806004018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561105b5780601f106110305761010080835404028352916020019161105b565b820191906000526020600020905b81548152906001019060200180831161103e57829003601f168201915b5050505050908060050154908060060154905087565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166391d14854600654336040518363ffffffff1660e01b81526004016110d2929190613741565b60206040518083038186803b1580156110ea57600080fd5b505afa1580156110fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111229190612f09565b905090565b61112f611071565b61116e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611165906137c2565b60405180910390fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f9fdb07212c6f92fd298affc4000712177664bc3c4cae5f61098d42da6d05be1e33826040516111e09291906135e3565b60405180910390a150565b606060048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156112835780601f1061125857610100808354040283529160200191611283565b820191906000526020600020905b81548152906001019060200180831161126657829003601f168201915b5050505050905090565b600061135061129a6118fb565b8461134b85604051806060016040528060258152602001613c7360259139600160006112c46118fb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d639092919063ffffffff16565b611903565b6001905092915050565b600061136e6113676118fb565b8484611ace565b6001905092915050565b6000611503600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016113fa91906135ad565b60206040518083038186803b15801561141257600080fd5b505afa158015611426573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061144a9190612f5b565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016114a591906135ad565b60206040518083038186803b1580156114bd57600080fd5b505afa1580156114d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f59190612f5b565b61212d90919063ffffffff16565b905090565b6115106117f3565b61154f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154690613962565b60405180910390fd5b611558816123c6565b50565b611563611071565b6115a2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611599906137c2565b60405180910390fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f80a3f12473a80f6a171c7096f3b364f834ec24355548ba7fc5168da0bb213fad33826040516116149291906135e3565b60405180910390a150565b6116276117f3565b611666576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165d90613962565b60405180910390fd5b61166e612636565b565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6116ff6117f3565b61173e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173590613962565b60405180910390fd5b6117f1600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b815260040161179c91906135c8565b60206040518083038186803b1580156117b457600080fd5b505afa1580156117c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117ec9190612f5b565b6123c6565b565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166391d14854600754336040518363ffffffff1660e01b8152600401611854929190613741565b60206040518083038186803b15801561186c57600080fd5b505afa158015611880573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a49190612f09565b905090565b60075481565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611973576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196a90613922565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156119e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119da90613802565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611ac191906139c2565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611b3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3590613902565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611bae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba5906137e2565b60405180910390fd5b611bb98383836127a8565b611c2481604051806060016040528060268152602001613c25602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d639092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611cb7816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461212d90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611d5691906139c2565b60405180910390a3505050565b6000838311158290611dab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da291906137a0565b60405180910390fd5b5082840390509392505050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e5c011e600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401611e3591906135ad565b600060405180830381600087803b158015611e4f57600080fd5b505af1158015611e63573d6000803e3d6000fd5b50505050565b600080831415611e7c5760009050611ed3565b6000828402905082848281611e8d57fe5b0414611ece576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec5906138c2565b60405180910390fd5b809150505b92915050565b6000808211611f1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1490613882565b60405180910390fd5b818381611f2657fe5b04905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611f9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f96906138e2565b60405180910390fd5b611fab826000836127a8565b61201681604051806060016040528060228152602001613c03602291396000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d639092919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061206d816002546120dd90919063ffffffff16565b600281905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516120d191906139c2565b60405180910390a35050565b600082821115612122576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211990613842565b60405180910390fd5b818303905092915050565b600080828401905083811015612178576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216f90613822565b60405180910390fd5b8091505092915050565b6122038363a9059cbb60e01b84846040516024016121a19291906136e2565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506127ad565b505050565b60006040518060e001604052808673ffffffffffffffffffffffffffffffffffffffff1681526020013373ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff168152602001848152602001838152602001428152602001438152509050600b81908060018154018082558091505060019003906000526020600020906007020160009091909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506060820151816003015560808201518160040190805190602001906123a8929190612c37565b5060a0820151816005015560c0820151816006015550505050505050565b6123ce611db8565b60006123d8611378565b90506000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161243791906135ad565b60206040518083038186803b15801561244f57600080fd5b505afa158015612463573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124879190612f5b565b90506124d8333085600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612874909392919063ffffffff16565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161253591906135ad565b60206040518083038186803b15801561254d57600080fd5b505afa158015612561573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125859190612f5b565b905061259a82826120dd90919063ffffffff16565b93506000806125a76107f3565b14156125b5578490506125e4565b6125e1846125d36125c46107f3565b88611e6990919063ffffffff16565b611ed990919063ffffffff16565b90505b6125ee33826128fd565b6125f6612636565b7f89d28cf06bdb2ee1b92cd046d58450042ad113e9f4cdabfc4d43e7c5557758d7338660405161262792919061360c565b60405180910390a15050505050565b6000612640610dcc565b905060008111612685576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161267c906138a2565b60405180910390fd5b6126f4600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166121829092919063ffffffff16565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b02bf4b9600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b81526004016127739291906136e2565b600060405180830381600087803b15801561278d57600080fd5b505af11580156127a1573d6000803e3d6000fd5b5050505050565b505050565b600061280f826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16612a919092919063ffffffff16565b905060008151111561286f578080602001905181019061282f9190612f09565b61286e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161286590613982565b60405180910390fd5b5b505050565b6128f7846323b872dd60e01b858585604051602401612895939291906136ab565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506127ad565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561296d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612964906139a2565b60405180910390fd5b612979600083836127a8565b61298e8160025461212d90919063ffffffff16565b6002819055506129e5816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461212d90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612a8591906139c2565b60405180910390a35050565b6060612aa08484600085612aa9565b90509392505050565b606082471015612aee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ae590613862565b60405180910390fd5b612af785612bbd565b612b36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b2d90613942565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051612b5f9190613596565b60006040518083038185875af1925050503d8060008114612b9c576040519150601f19603f3d011682016040523d82523d6000602084013e612ba1565b606091505b5091509150612bb1828286612bd0565b92505050949350505050565b600080823b905060008111915050919050565b60608315612be057829050612c30565b600083511115612bf35782518084602001fd5b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c2791906137a0565b60405180910390fd5b9392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282612c6d5760008555612cb4565b82601f10612c8657805160ff1916838001178555612cb4565b82800160010185558215612cb4579182015b82811115612cb3578251825591602001919060010190612c98565b5b509050612cc19190612cc5565b5090565b5b80821115612cde576000816000905550600101612cc6565b5090565b6000612cf5612cf084613a29565b6139f8565b905082815260208101848484011115612d0d57600080fd5b612d18848285613b68565b509392505050565b600081359050612d2f81613bbd565b92915050565b600081519050612d4481613bd4565b92915050565b600082601f830112612d5b57600080fd5b8135612d6b848260208601612ce2565b91505092915050565b600081359050612d8381613beb565b92915050565b600081519050612d9881613beb565b92915050565b600060208284031215612db057600080fd5b6000612dbe84828501612d20565b91505092915050565b60008060408385031215612dda57600080fd5b6000612de885828601612d20565b9250506020612df985828601612d20565b9150509250929050565b600080600060608486031215612e1857600080fd5b6000612e2686828701612d20565b9350506020612e3786828701612d20565b9250506040612e4886828701612d74565b9150509250925092565b60008060008060808587031215612e6857600080fd5b6000612e7687828801612d20565b9450506020612e8787828801612d20565b9350506040612e9887828801612d74565b925050606085013567ffffffffffffffff811115612eb557600080fd5b612ec187828801612d4a565b91505092959194509250565b60008060408385031215612ee057600080fd5b6000612eee85828601612d20565b9250506020612eff85828601612d74565b9150509250929050565b600060208284031215612f1b57600080fd5b6000612f2984828501612d35565b91505092915050565b600060208284031215612f4457600080fd5b6000612f5284828501612d74565b91505092915050565b600060208284031215612f6d57600080fd5b6000612f7b84828501612d89565b91505092915050565b612f8d81613aea565b82525050565b612f9c81613a8b565b82525050565b612fab81613a9d565b82525050565b612fba81613aa9565b82525050565b6000612fcb82613a59565b612fd58185613a6f565b9350612fe5818560208601613b77565b80840191505092915050565b612ffa81613afc565b82525050565b61300981613b20565b82525050565b600061301a82613a64565b6130248185613a7a565b9350613034818560208601613b77565b61303d81613bac565b840191505092915050565b6000613055601583613a7a565b91507f43616c6c6572206973206e6f7420612061646d696e00000000000000000000006000830152602082019050919050565b6000613095602383613a7a565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006130fb602283613a7a565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613161601b83613a7a565b91507f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006000830152602082019050919050565b60006131a1601e83613a7a565b91507f536166654d6174683a207375627472616374696f6e206f766572666c6f7700006000830152602082019050919050565b60006131e1602683613a7a565b91507f416464726573733a20696e73756666696369656e742062616c616e636520666f60008301527f722063616c6c00000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613247601a83613a7a565b91507f536166654d6174683a206469766973696f6e206279207a65726f0000000000006000830152602082019050919050565b6000613287601283613a7a565b91507f496e73756666696369656e742066756e647300000000000000000000000000006000830152602082019050919050565b60006132c7602183613a7a565b91507f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008301527f77000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061332d602183613a7a565b91507f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008301527f73000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613393602583613a7a565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006133f9602483613a7a565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061345f601d83613a7a565b91507f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006000830152602082019050919050565b600061349f601883613a7a565b91507f43616c6c6572206973206e6f742061206f70657261746f7200000000000000006000830152602082019050919050565b60006134df602a83613a7a565b91507f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008301527f6f742073756363656564000000000000000000000000000000000000000000006020830152604082019050919050565b6000613545601f83613a7a565b91507f45524332303a206d696e7420746f20746865207a65726f2061646472657373006000830152602082019050919050565b61358181613ad3565b82525050565b61359081613add565b82525050565b60006135a28284612fc0565b915081905092915050565b60006020820190506135c26000830184612f93565b92915050565b60006020820190506135dd6000830184612f84565b92915050565b60006040820190506135f86000830185612f84565b6136056020830184612f93565b9392505050565b60006040820190506136216000830185612f84565b61362e6020830184613578565b9392505050565b600060e08201905061364a600083018a612f93565b6136576020830189612f93565b6136646040830188612f93565b6136716060830187613578565b8181036080830152613683818661300f565b905061369260a0830185613578565b61369f60c0830184613578565b98975050505050505050565b60006060820190506136c06000830186612f93565b6136cd6020830185612f93565b6136da6040830184613578565b949350505050565b60006040820190506136f76000830185612f93565b6137046020830184613578565b9392505050565b60006020820190506137206000830184612fa2565b92915050565b600060208201905061373b6000830184612fb1565b92915050565b60006040820190506137566000830185612fb1565b6137636020830184612f84565b9392505050565b600060208201905061377f6000830184612ff1565b92915050565b600060208201905061379a6000830184613000565b92915050565b600060208201905081810360008301526137ba818461300f565b905092915050565b600060208201905081810360008301526137db81613048565b9050919050565b600060208201905081810360008301526137fb81613088565b9050919050565b6000602082019050818103600083015261381b816130ee565b9050919050565b6000602082019050818103600083015261383b81613154565b9050919050565b6000602082019050818103600083015261385b81613194565b9050919050565b6000602082019050818103600083015261387b816131d4565b9050919050565b6000602082019050818103600083015261389b8161323a565b9050919050565b600060208201905081810360008301526138bb8161327a565b9050919050565b600060208201905081810360008301526138db816132ba565b9050919050565b600060208201905081810360008301526138fb81613320565b9050919050565b6000602082019050818103600083015261391b81613386565b9050919050565b6000602082019050818103600083015261393b816133ec565b9050919050565b6000602082019050818103600083015261395b81613452565b9050919050565b6000602082019050818103600083015261397b81613492565b9050919050565b6000602082019050818103600083015261399b816134d2565b9050919050565b600060208201905081810360008301526139bb81613538565b9050919050565b60006020820190506139d76000830184613578565b92915050565b60006020820190506139f26000830184613587565b92915050565b6000604051905081810181811067ffffffffffffffff82111715613a1f57613a1e613baa565b5b8060405250919050565b600067ffffffffffffffff821115613a4457613a43613baa565b5b601f19601f8301169050602081019050919050565b600081519050919050565b600081519050919050565b600081905092915050565b600082825260208201905092915050565b6000613a9682613ab3565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000613af582613b44565b9050919050565b6000613b0782613b0e565b9050919050565b6000613b1982613ab3565b9050919050565b6000613b2b82613b32565b9050919050565b6000613b3d82613ab3565b9050919050565b6000613b4f82613b56565b9050919050565b6000613b6182613ab3565b9050919050565b82818337600083830152505050565b60005b83811015613b95578082015181840152602081019050613b7a565b83811115613ba4576000848401525b50505050565bfe5b6000601f19601f8301169050919050565b613bc681613a8b565b8114613bd157600080fd5b50565b613bdd81613a9d565b8114613be857600080fd5b50565b613bf481613ad3565b8114613bff57600080fd5b5056fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122063ca92c193b70a201138b3e8453b22e9df1ccba4549227295bb5ace0841aba4464736f6c63430007060033000000000000000000000000a9360b8ed7b9b30f41bb584677423a5c9b412b460000000000000000000000000e51ac179a2f148a7f1a8ac62882258ae40b85d8000000000000000000000000f7a51488bf4b119e67a339633ef8125cef15624a