0x60806040526000600c60006101000a81548160ff021916908360ff1602179055506000600c60016101000a81548160ff0219169083151502179055503480156200004857600080fd5b506040516200532b3803806200532b83398181016040528101906200006e919062000461565b6040518060400160405280601081526020017f546865206f726967696e616c20626174000000000000000000000000000000008152506040518060400160405280600381526020017f544f4200000000000000000000000000000000000000000000000000000000008152508160009080519060200190620000f292919062000333565b5080600190805190602001906200010b92919062000333565b5050506200012e620001226200015060201b60201c565b6200015860201b60201c565b6001600b81905550620001496000826200021e60201b60201c565b50620006b9565b600033905090565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6200022e6200027860201b60201c565b60008260ff1614156200025a5780600e90805190602001906200025392919062000333565b5062000274565b80600d90805190602001906200027292919062000333565b505b5050565b620002886200015060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620002ae6200030960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000307576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002fe90620004d9565b60405180910390fd5b565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b8280546200034190620005a1565b90600052602060002090601f016020900481019282620003655760008555620003b1565b82601f106200038057805160ff1916838001178555620003b1565b82800160010185558215620003b1579182015b82811115620003b057825182559160200191906001019062000393565b5b509050620003c09190620003c4565b5090565b5b80821115620003df576000816000905550600101620003c5565b5090565b6000620003fa620003f48462000524565b620004fb565b90508281526020810184848401111562000419576200041862000670565b5b620004268482856200056b565b509392505050565b600082601f8301126200044657620004456200066b565b5b815162000458848260208601620003e3565b91505092915050565b6000602082840312156200047a57620004796200067a565b5b600082015167ffffffffffffffff8111156200049b576200049a62000675565b5b620004a9848285016200042e565b91505092915050565b6000620004c16020836200055a565b9150620004ce8262000690565b602082019050919050565b60006020820190508181036000830152620004f481620004b2565b9050919050565b6000620005076200051a565b9050620005158282620005d7565b919050565b6000604051905090565b600067ffffffffffffffff8211156200054257620005416200063c565b5b6200054d826200067f565b9050602081019050919050565b600082825260208201905092915050565b60005b838110156200058b5780820151818401526020810190506200056e565b838111156200059b576000848401525b50505050565b60006002820490506001821680620005ba57607f821691505b60208210811415620005d157620005d06200060d565b5b50919050565b620005e2826200067f565b810181811067ffffffffffffffff821117156200060457620006036200063c565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b614c6280620006c96000396000f3fe608060405234801561001057600080fd5b50600436106101cf5760003560e01c80636352211e11610104578063a22cb465116100a2578063d9ab128811610071578063d9ab128814610516578063e985e9c514610532578063ee3743ab14610562578063f2fde38b1461056c576101cf565b8063a22cb46514610492578063b88d4fde146104ae578063bdc9cacd146104ca578063c87b56dd146104e6576101cf565b8063715018a6116100de578063715018a61461043057806380d9c3131461043a5780638da5cb5b1461045657806395d89b4114610474576101cf565b80636352211e146103b45780636ecd2306146103e457806370a0823114610400576101cf565b80632f745c59116101715780634aaca86d1161014b5780634aaca86d1461032c5780634f6ccce71461034a57806351cff8d91461037a5780635c975abb14610396576101cf565b80632f745c59146102c457806342842e0e146102f457806342966c6814610310576101cf565b8063081812fc116101ad578063081812fc1461023e578063095ea7b31461026e57806318160ddd1461028a57806323b872dd146102a8576101cf565b806301ffc9a7146101d457806302329a291461020457806306fdde0314610220575b600080fd5b6101ee60048036038101906101e9919061324b565b610588565b6040516101fb9190613ad0565b60405180910390f35b61021e6004803603810190610219919061321e565b610602565b005b610228610627565b6040516102359190613b30565b60405180910390f35b610258600480360381019061025391906132a5565b6106b9565b6040516102659190613a69565b60405180910390f35b610288600480360381019061028391906131de565b6106ff565b005b610292610817565b60405161029f9190613f12565b60405180910390f35b6102c260048036038101906102bd91906130c8565b610824565b005b6102de60048036038101906102d991906131de565b610884565b6040516102eb9190613f12565b60405180910390f35b61030e600480360381019061030991906130c8565b610929565b005b61032a600480360381019061032591906132a5565b610949565b005b610334610968565b6040516103419190613f48565b60405180910390f35b610364600480360381019061035f91906132a5565b61097b565b6040516103719190613f12565b60405180910390f35b610394600480360381019061038f919061305b565b6109ec565b005b61039e610ab7565b6040516103ab9190613ad0565b60405180910390f35b6103ce60048036038101906103c991906132a5565b610aca565b6040516103db9190613a69565b60405180910390f35b6103fe60048036038101906103f991906132d2565b610b7c565b005b61041a6004803603810190610415919061305b565b610d14565b6040516104279190613f12565b60405180910390f35b610438610dcc565b005b610454600480360381019061044f91906132a5565b610de0565b005b61045e610df4565b60405161046b9190613a69565b60405180910390f35b61047c610e1e565b6040516104899190613b30565b60405180910390f35b6104ac60048036038101906104a7919061319e565b610eb0565b005b6104c860048036038101906104c3919061311b565b610ec6565b005b6104e460048036038101906104df919061335b565b610f28565b005b61050060048036038101906104fb91906132a5565b610f74565b60405161050d9190613b30565b60405180910390f35b610530600480360381019061052b91906132ff565b6110a9565b005b61054c60048036038101906105479190613088565b6112cd565b6040516105599190613ad0565b60405180910390f35b61056a611361565b005b6105866004803603810190610581919061305b565b611408565b005b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806105fb57506105fa8261148c565b5b9050919050565b61060a61156e565b80600c60016101000a81548160ff02191690831515021790555050565b6060600080546106369061421e565b80601f01602080910402602001604051908101604052809291908181526020018280546106629061421e565b80156106af5780601f10610684576101008083540402835291602001916106af565b820191906000526020600020905b81548152906001019060200180831161069257829003601f168201915b5050505050905090565b60006106c4826115ec565b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061070a82610aca565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561077b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077290613e32565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1661079a611637565b73ffffffffffffffffffffffffffffffffffffffff1614806107c957506107c8816107c3611637565b6112cd565b5b610808576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ff90613d92565b60405180910390fd5b610812838361163f565b505050565b6000600880549050905090565b61083561082f611637565b826116f8565b610874576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086b90613ed2565b60405180910390fd5b61087f83838361178d565b505050565b600061088f83610d14565b82106108d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c790613c12565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b61094483838360405180602001604052806000815250610ec6565b505050565b61095332826116f8565b61095c57600080fd5b610965816119f4565b50565b600c60009054906101000a900460ff1681565b6000610985610817565b82106109c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109bd90613eb2565b60405180910390fd5b600882815481106109da576109d961443e565b5b90600052602060002001549050919050565b6109f461156e565b600047905060008111610a0657600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff1682604051610a2c90613a54565b60006040518083038185875af1925050503d8060008114610a69576040519150601f19603f3d011682016040523d82523d6000602084013e610a6e565b606091505b5050905080610ab2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aa990613c72565b60405180910390fd5b505050565b600c60019054906101000a900460ff1681565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610b73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6a90613e12565b60405180910390fd5b80915050919050565b6002600b541415610bc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb990613ef2565b60405180910390fd5b6002600b819055506000610bd4610817565b9050610c52600c60019054906101000a900460ff168284600c60009054906101000a900460ff166000600f60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff16611b11565b81600f60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282829054906101000a900460ff16610cad91906140a3565b92506101000a81548160ff021916908360ff16021790555060005b8260ff16811015610d0757610cf43282600185610ce5919061404d565b610cef919061404d565b611d82565b8080610cff90614281565b915050610cc8565b50506001600b8190555050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610d85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7c90613d52565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610dd461156e565b610dde6000611da0565b565b610de861156e565b610df1816119f4565b50565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060018054610e2d9061421e565b80601f0160208091040260200160405190810160405280929190818152602001828054610e599061421e565b8015610ea65780601f10610e7b57610100808354040283529160200191610ea6565b820191906000526020600020905b815481529060010190602001808311610e8957829003601f168201915b5050505050905090565b610ec2610ebb611637565b8383611e66565b5050565b610ed7610ed1611637565b836116f8565b610f16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0d90613ed2565b60405180910390fd5b610f2284848484611fd3565b50505050565b610f3061156e565b60008260ff161415610f585780600e9080519060200190610f52929190612e5a565b50610f70565b80600d9080519060200190610f6e929190612e5a565b505b5050565b6060610f7f8261202f565b610fbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb590613bd2565b60405180910390fd5b6002600c60009054906101000a900460ff1660ff161161106a57600e8054610fe59061421e565b80601f01602080910402602001604051908101604052809291908181526020018280546110119061421e565b801561105e5780601f106110335761010080835404028352916020019161105e565b820191906000526020600020905b81548152906001019060200180831161104157829003601f168201915b505050505090506110a4565b600d61108160018461107c919061404d565b61209b565b6040516020016110929291906139e4565b60405160208183030381529060405290505b919050565b6002600b5414156110ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e690613ef2565b60405180910390fd5b6002600b819055506000611101610817565b905061117f600c60019054906101000a900460ff168285600c60009054906101000a900460ff166001600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff16611b11565b73a9640de361d1acf02269fabf4961464bfed60af973ffffffffffffffffffffffffffffffffffffffff166111b433846121fc565b73ffffffffffffffffffffffffffffffffffffffff161461120a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120190613bf2565b60405180910390fd5b82600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282829054906101000a900460ff1661126591906140a3565b92506101000a81548160ff021916908360ff16021790555060005b8360ff168110156112bf576112ac338260018561129d919061404d565b6112a7919061404d565b611d82565b80806112b790614281565b915050611280565b50506001600b819055505050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61136961156e565b6003600c60009054906101000a900460ff1660ff161061138857600080fd5b600c600081819054906101000a900460ff16809291906113a7906142ca565b91906101000a81548160ff021916908360ff160217905550507f9b81842605af0e5e5ea930976837a6cf8ddae4c365030c958a17eb8fe380c4f5600c60009054906101000a900460ff166040516113fe9190613f2d565b60405180910390a1565b61141061156e565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611480576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147790613c52565b60405180910390fd5b61148981611da0565b50565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061155757507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80611567575061156682612252565b5b9050919050565b611576611637565b73ffffffffffffffffffffffffffffffffffffffff16611594610df4565b73ffffffffffffffffffffffffffffffffffffffff16146115ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e190613df2565b60405180910390fd5b565b6115f58161202f565b611634576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162b90613e12565b60405180910390fd5b50565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff166116b283610aca565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008061170483610aca565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611746575061174581856112cd565b5b8061178457508373ffffffffffffffffffffffffffffffffffffffff1661176c846106b9565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff166117ad82610aca565b73ffffffffffffffffffffffffffffffffffffffff1614611803576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117fa90613c92565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611873576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186a90613cd2565b60405180910390fd5b61187e8383836122bc565b61188960008261163f565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546118d9919061410b565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611930919061404d565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46119ef8383836123d0565b505050565b60006119ff82610aca565b9050611a0d816000846122bc565b611a1860008361163f565b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611a68919061410b565b925050819055506002600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905581600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611b0d816000846123d0565b5050565b8515611b52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4990613b72565b60405180910390fd5b6127108460ff1686611b64919061404d565b10611ba4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9b90613e92565b60405180910390fd5b60008360ff1611611bea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be190613e52565b60405180910390fd5b60008460ff1611611c30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2790613e72565b60405180910390fd5b8115611ce15760028360ff161480611c4b575060018360ff16145b611c8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8190613d32565b60405180910390fd5b600f818560ff16611c9b919061404d565b1115611cdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd390613bb2565b60405180910390fd5b611d7a565b60028360ff1614611d27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1e90613d32565b60405180910390fd5b600a818560ff16611d38919061404d565b1115611d79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7090613dd2565b60405180910390fd5b5b505050505050565b611d9c8282604051806020016040528060008152506123d5565b5050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611ed5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ecc90613cf2565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611fc69190613ad0565b60405180910390a3505050565b611fde84848461178d565b611fea84848484612430565b612029576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202090613c32565b60405180910390fd5b50505050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b606060008214156120e3576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506121f7565b600082905060005b600082146121155780806120fe90614281565b915050600a8261210e91906140da565b91506120eb565b60008167ffffffffffffffff8111156121315761213061446d565b5b6040519080825280601f01601f1916602001820160405280156121635781602001600182028036833780820191505090505b5090505b600085146121f05760018261217c919061410b565b9150600a8561218b9190614322565b6030612197919061404d565b60f81b8183815181106121ad576121ac61443e565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856121e991906140da565b9450612167565b8093505050505b919050565b600080836040516020016122109190613a2e565b604051602081830303815290604052805190602001209050600061224584612237846125c7565b6125f790919063ffffffff16565b9050809250505092915050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6122c783838361261e565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561230a5761230581612623565b612349565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461234857612347838261266c565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561238c57612387816127d9565b6123cb565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146123ca576123c982826128aa565b5b5b505050565b505050565b6123df8383612929565b6123ec6000848484612430565b61242b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161242290613c32565b60405180910390fd5b505050565b60006124518473ffffffffffffffffffffffffffffffffffffffff16612b03565b156125ba578373ffffffffffffffffffffffffffffffffffffffff1663150b7a0261247a611637565b8786866040518563ffffffff1660e01b815260040161249c9493929190613a84565b602060405180830381600087803b1580156124b657600080fd5b505af19250505080156124e757506040513d601f19601f820116820180604052508101906124e49190613278565b60015b61256a573d8060008114612517576040519150601f19603f3d011682016040523d82523d6000602084013e61251c565b606091505b50600081511415612562576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161255990613c32565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150506125bf565b600190505b949350505050565b6000816040516020016125da9190613a08565b604051602081830303815290604052805190602001209050919050565b60008060006126068585612b26565b9150915061261381612b78565b819250505092915050565b505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b6000600161267984610d14565b612683919061410b565b9050600060076000848152602001908152602001600020549050818114612768576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b600060016008805490506127ed919061410b565b905060006009600084815260200190815260200160002054905060006008838154811061281d5761281c61443e565b5b90600052602060002001549050806008838154811061283f5761283e61443e565b5b90600052602060002001819055508160096000838152602001908152602001600020819055506009600085815260200190815260200160002060009055600880548061288e5761288d61440f565b5b6001900381819060005260206000200160009055905550505050565b60006128b583610d14565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612999576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161299090613db2565b60405180910390fd5b6129a28161202f565b156129e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129d990613cb2565b60405180910390fd5b6129ee600083836122bc565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612a3e919061404d565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612aff600083836123d0565b5050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600080604183511415612b685760008060006020860151925060408601519150606086015160001a9050612b5c87828585612d4d565b94509450505050612b71565b60006002915091505b9250929050565b60006004811115612b8c57612b8b6143b1565b5b816004811115612b9f57612b9e6143b1565b5b1415612baa57612d4a565b60016004811115612bbe57612bbd6143b1565b5b816004811115612bd157612bd06143b1565b5b1415612c12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c0990613b52565b60405180910390fd5b60026004811115612c2657612c256143b1565b5b816004811115612c3957612c386143b1565b5b1415612c7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c7190613b92565b60405180910390fd5b60036004811115612c8e57612c8d6143b1565b5b816004811115612ca157612ca06143b1565b5b1415612ce2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cd990613d12565b60405180910390fd5b600480811115612cf557612cf46143b1565b5b816004811115612d0857612d076143b1565b5b1415612d49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d4090613d72565b60405180910390fd5b5b50565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08360001c1115612d88576000600391509150612e51565b601b8560ff1614158015612da05750601c8560ff1614155b15612db2576000600491509150612e51565b600060018787878760405160008152602001604052604051612dd79493929190613aeb565b6020604051602081039080840390855afa158015612df9573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612e4857600060019250925050612e51565b80600092509250505b94509492505050565b828054612e669061421e565b90600052602060002090601f016020900481019282612e885760008555612ecf565b82601f10612ea157805160ff1916838001178555612ecf565b82800160010185558215612ecf579182015b82811115612ece578251825591602001919060010190612eb3565b5b509050612edc9190612ee0565b5090565b5b80821115612ef9576000816000905550600101612ee1565b5090565b6000612f10612f0b84613f88565b613f63565b905082815260208101848484011115612f2c57612f2b6144a1565b5b612f378482856141dc565b509392505050565b6000612f52612f4d84613fb9565b613f63565b905082815260208101848484011115612f6e57612f6d6144a1565b5b612f798482856141dc565b509392505050565b600081359050612f9081614bb9565b92915050565b600081359050612fa581614bd0565b92915050565b600081359050612fba81614be7565b92915050565b600081519050612fcf81614be7565b92915050565b600082601f830112612fea57612fe961449c565b5b8135612ffa848260208601612efd565b91505092915050565b600082601f8301126130185761301761449c565b5b8135613028848260208601612f3f565b91505092915050565b60008135905061304081614bfe565b92915050565b60008135905061305581614c15565b92915050565b600060208284031215613071576130706144ab565b5b600061307f84828501612f81565b91505092915050565b6000806040838503121561309f5761309e6144ab565b5b60006130ad85828601612f81565b92505060206130be85828601612f81565b9150509250929050565b6000806000606084860312156130e1576130e06144ab565b5b60006130ef86828701612f81565b935050602061310086828701612f81565b925050604061311186828701613031565b9150509250925092565b60008060008060808587031215613135576131346144ab565b5b600061314387828801612f81565b945050602061315487828801612f81565b935050604061316587828801613031565b925050606085013567ffffffffffffffff811115613186576131856144a6565b5b61319287828801612fd5565b91505092959194509250565b600080604083850312156131b5576131b46144ab565b5b60006131c385828601612f81565b92505060206131d485828601612f96565b9150509250929050565b600080604083850312156131f5576131f46144ab565b5b600061320385828601612f81565b925050602061321485828601613031565b9150509250929050565b600060208284031215613234576132336144ab565b5b600061324284828501612f96565b91505092915050565b600060208284031215613261576132606144ab565b5b600061326f84828501612fab565b91505092915050565b60006020828403121561328e5761328d6144ab565b5b600061329c84828501612fc0565b91505092915050565b6000602082840312156132bb576132ba6144ab565b5b60006132c984828501613031565b91505092915050565b6000602082840312156132e8576132e76144ab565b5b60006132f684828501613046565b91505092915050565b60008060408385031215613316576133156144ab565b5b600061332485828601613046565b925050602083013567ffffffffffffffff811115613345576133446144a6565b5b61335185828601612fd5565b9150509250929050565b60008060408385031215613372576133716144ab565b5b600061338085828601613046565b925050602083013567ffffffffffffffff8111156133a1576133a06144a6565b5b6133ad85828601613003565b9150509250929050565b6133c08161413f565b82525050565b6133d76133d28261413f565b6142f4565b82525050565b6133e681614151565b82525050565b6133f58161415d565b82525050565b61340c6134078261415d565b614306565b82525050565b600061341d82613fff565b6134278185614015565b93506134378185602086016141eb565b613440816144b0565b840191505092915050565b60006134568261400a565b6134608185614031565b93506134708185602086016141eb565b613479816144b0565b840191505092915050565b600061348f8261400a565b6134998185614042565b93506134a98185602086016141eb565b80840191505092915050565b600081546134c28161421e565b6134cc8186614042565b945060018216600081146134e757600181146134f85761352b565b60ff1983168652818601935061352b565b61350185613fea565b60005b8381101561352357815481890152600182019150602081019050613504565b838801955050505b50505092915050565b6000613541601883614031565b915061354c826144ce565b602082019050919050565b6000613564600683614031565b915061356f826144f7565b602082019050919050565b6000613587601f83614031565b915061359282614520565b602082019050919050565b60006135aa601c83614042565b91506135b582614549565b601c82019050919050565b60006135cd601483614031565b91506135d882614572565b602082019050919050565b60006135f0601f83614031565b91506135fb8261459b565b602082019050919050565b6000613613601383614031565b915061361e826145c4565b602082019050919050565b6000613636602b83614031565b9150613641826145ed565b604082019050919050565b6000613659603283614031565b91506136648261463c565b604082019050919050565b600061367c602683614031565b91506136878261468b565b604082019050919050565b600061369f600f83614031565b91506136aa826146da565b602082019050919050565b60006136c2602583614031565b91506136cd82614703565b604082019050919050565b60006136e5601c83614031565b91506136f082614752565b602082019050919050565b6000613708601083614042565b91506137138261477b565b601082019050919050565b600061372b602483614031565b9150613736826147a4565b604082019050919050565b600061374e601983614031565b9150613759826147f3565b602082019050919050565b6000613771602283614031565b915061377c8261481c565b604082019050919050565b6000613794600d83614031565b915061379f8261486b565b602082019050919050565b60006137b7602983614031565b91506137c282614894565b604082019050919050565b60006137da602283614031565b91506137e5826148e3565b604082019050919050565b60006137fd603e83614031565b915061380882614932565b604082019050919050565b6000613820602083614031565b915061382b82614981565b602082019050919050565b6000613843601483614031565b915061384e826149aa565b602082019050919050565b6000613866602083614031565b9150613871826149d3565b602082019050919050565b6000613889601883614031565b9150613894826149fc565b602082019050919050565b60006138ac602183614031565b91506138b782614a25565b604082019050919050565b60006138cf600d83614031565b91506138da82614a74565b602082019050919050565b60006138f2601483614031565b91506138fd82614a9d565b602082019050919050565b6000613915600083614026565b915061392082614ac6565b600082019050919050565b6000613938600d83614031565b915061394382614ac9565b602082019050919050565b600061395b602c83614031565b915061396682614af2565b604082019050919050565b600061397e602e83614031565b915061398982614b41565b604082019050919050565b60006139a1601f83614031565b91506139ac82614b90565b602082019050919050565b6139c0816141b3565b82525050565b6139cf816141ca565b82525050565b6139de816141bd565b82525050565b60006139f082856134b5565b91506139fc8284613484565b91508190509392505050565b6000613a138261359d565b9150613a1f82846133fb565b60208201915081905092915050565b6000613a39826136fb565b9150613a4582846133c6565b60148201915081905092915050565b6000613a5f82613908565b9150819050919050565b6000602082019050613a7e60008301846133b7565b92915050565b6000608082019050613a9960008301876133b7565b613aa660208301866133b7565b613ab360408301856139b7565b8181036060830152613ac58184613412565b905095945050505050565b6000602082019050613ae560008301846133dd565b92915050565b6000608082019050613b0060008301876133ec565b613b0d60208301866139d5565b613b1a60408301856133ec565b613b2760608301846133ec565b95945050505050565b60006020820190508181036000830152613b4a818461344b565b905092915050565b60006020820190508181036000830152613b6b81613534565b9050919050565b60006020820190508181036000830152613b8b81613557565b9050919050565b60006020820190508181036000830152613bab8161357a565b9050919050565b60006020820190508181036000830152613bcb816135c0565b9050919050565b60006020820190508181036000830152613beb816135e3565b9050919050565b60006020820190508181036000830152613c0b81613606565b9050919050565b60006020820190508181036000830152613c2b81613629565b9050919050565b60006020820190508181036000830152613c4b8161364c565b9050919050565b60006020820190508181036000830152613c6b8161366f565b9050919050565b60006020820190508181036000830152613c8b81613692565b9050919050565b60006020820190508181036000830152613cab816136b5565b9050919050565b60006020820190508181036000830152613ccb816136d8565b9050919050565b60006020820190508181036000830152613ceb8161371e565b9050919050565b60006020820190508181036000830152613d0b81613741565b9050919050565b60006020820190508181036000830152613d2b81613764565b9050919050565b60006020820190508181036000830152613d4b81613787565b9050919050565b60006020820190508181036000830152613d6b816137aa565b9050919050565b60006020820190508181036000830152613d8b816137cd565b9050919050565b60006020820190508181036000830152613dab816137f0565b9050919050565b60006020820190508181036000830152613dcb81613813565b9050919050565b60006020820190508181036000830152613deb81613836565b9050919050565b60006020820190508181036000830152613e0b81613859565b9050919050565b60006020820190508181036000830152613e2b8161387c565b9050919050565b60006020820190508181036000830152613e4b8161389f565b9050919050565b60006020820190508181036000830152613e6b816138c2565b9050919050565b60006020820190508181036000830152613e8b816138e5565b9050919050565b60006020820190508181036000830152613eab8161392b565b9050919050565b60006020820190508181036000830152613ecb8161394e565b9050919050565b60006020820190508181036000830152613eeb81613971565b9050919050565b60006020820190508181036000830152613f0b81613994565b9050919050565b6000602082019050613f2760008301846139b7565b92915050565b6000602082019050613f4260008301846139c6565b92915050565b6000602082019050613f5d60008301846139d5565b92915050565b6000613f6d613f7e565b9050613f798282614250565b919050565b6000604051905090565b600067ffffffffffffffff821115613fa357613fa261446d565b5b613fac826144b0565b9050602081019050919050565b600067ffffffffffffffff821115613fd457613fd361446d565b5b613fdd826144b0565b9050602081019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b6000614058826141b3565b9150614063836141b3565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561409857614097614353565b5b828201905092915050565b60006140ae826141bd565b91506140b9836141bd565b92508260ff038211156140cf576140ce614353565b5b828201905092915050565b60006140e5826141b3565b91506140f0836141b3565b925082614100576140ff614382565b5b828204905092915050565b6000614116826141b3565b9150614121836141b3565b92508282101561413457614133614353565b5b828203905092915050565b600061414a82614193565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006141d5826141bd565b9050919050565b82818337600083830152505050565b60005b838110156142095780820151818401526020810190506141ee565b83811115614218576000848401525b50505050565b6000600282049050600182168061423657607f821691505b6020821081141561424a576142496143e0565b5b50919050565b614259826144b0565b810181811067ffffffffffffffff821117156142785761427761446d565b5b80604052505050565b600061428c826141b3565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156142bf576142be614353565b5b600182019050919050565b60006142d5826141bd565b915060ff8214156142e9576142e8614353565b5b600182019050919050565b60006142ff82614310565b9050919050565b6000819050919050565b600061431b826144c1565b9050919050565b600061432d826141b3565b9150614338836141b3565b92508261434857614347614382565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b7f45434453413a20696e76616c6964207369676e61747572650000000000000000600082015250565b7f5061757365640000000000000000000000000000000000000000000000000000600082015250565b7f45434453413a20696e76616c6964207369676e6174757265206c656e67746800600082015250565b7f19457468657265756d205369676e6564204d6573736167653a0a333200000000600082015250565b7f596f752063616e206f6e6c79206d696e74203135000000000000000000000000600082015250565b7f55524920717565727920666f72206e6f6e6578697374656e7420746f6b656e00600082015250565b7f4d7573742062652077686974656c697374656400000000000000000000000000600082015250565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f5472616e73666572206661696c65640000000000000000000000000000000000600082015250565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f546865206f726967696e616c2062617400000000000000000000000000000000600082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f45434453413a20696e76616c6964207369676e6174757265202773272076616c60008201527f7565000000000000000000000000000000000000000000000000000000000000602082015250565b7f696e76616c696420737461676500000000000000000000000000000000000000600082015250565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b7f45434453413a20696e76616c6964207369676e6174757265202776272076616c60008201527f7565000000000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000602082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f596f752063616e206f6e6c79206d696e74203130000000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f4e6f7420617661696c61626c6500000000000000000000000000000000000000600082015250565b7f4d757374206d696e74206174206c656173742031000000000000000000000000600082015250565b50565b7f4e6f20746f6b656e206c65667400000000000000000000000000000000000000600082015250565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206e6f7220617070726f766564000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b614bc28161413f565b8114614bcd57600080fd5b50565b614bd981614151565b8114614be457600080fd5b50565b614bf081614167565b8114614bfb57600080fd5b50565b614c07816141b3565b8114614c1257600080fd5b50565b614c1e816141bd565b8114614c2957600080fd5b5056fea2646970667358221220da209262f0226559e942c8dafdbbfd8c91fbfeccd99a4a05e1229ecb7cd01da164736f6c6343000807003300000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000035697066733a2f2f516d5256545a44754a5639554c73546465446a45384d6e6d695a4a714c7062454d35625a634558584d59667554660000000000000000000000