60806040526001600a553480156200001657600080fd5b506040518060400160405280600781526020017f4950546f6b656e000000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f495054000000000000000000000000000000000000000000000000000000000081525081600090816200009491906200036a565b508060019081620000a691906200036a565b50505033600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000451565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200017257607f821691505b6020821081036200018857620001876200012a565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620001f27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620001b3565b620001fe8683620001b3565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006200024b620002456200023f8462000216565b62000220565b62000216565b9050919050565b6000819050919050565b62000267836200022a565b6200027f620002768262000252565b848454620001c0565b825550505050565b600090565b6200029662000287565b620002a38184846200025c565b505050565b5b81811015620002cb57620002bf6000826200028c565b600181019050620002a9565b5050565b601f8211156200031a57620002e4816200018e565b620002ef84620001a3565b81016020851015620002ff578190505b620003176200030e85620001a3565b830182620002a8565b50505b505050565b600082821c905092915050565b60006200033f600019846008026200031f565b1980831691505092915050565b60006200035a83836200032c565b9150826002028217905092915050565b6200037582620000f0565b67ffffffffffffffff811115620003915762000390620000fb565b5b6200039d825462000159565b620003aa828285620002cf565b600060209050601f831160018114620003e25760008415620003cd578287015190505b620003d985826200034c565b86555062000449565b601f198416620003f2866200018e565b60005b828110156200041c57848901518255600182019150602085019450602081019050620003f5565b868310156200043c578489015162000438601f8916826200032c565b8355505b6001600288020188555050505b505050505050565b613f4480620004616000396000f3fe6080604052600436106101355760003560e01c80638e264590116100ab578063c322579c1161006f578063c322579c14610430578063c87b56dd1461044c578063d1a88ae514610489578063e0391b09146104b4578063e985e9c5146104df578063ef2d17461461051c57610135565b80638e2645901461035a57806395d89b41146103975780639b1225c4146103c2578063a22cb465146103de578063b88d4fde1461040757610135565b806342842e0e116100fd57806342842e0e14610231578063629cb2e41461025a5780636352211e1461028557806368f1945f146102c257806370a08231146102ed57806372b3b6201461032a57610135565b806301ffc9a71461013a57806306fdde0314610177578063081812fc146101a2578063095ea7b3146101df57806323b872dd14610208575b600080fd5b34801561014657600080fd5b50610161600480360381019061015c91906128d1565b610547565b60405161016e9190612919565b60405180910390f35b34801561018357600080fd5b5061018c610629565b60405161019991906129c4565b60405180910390f35b3480156101ae57600080fd5b506101c960048036038101906101c49190612a1c565b6106bb565b6040516101d69190612a8a565b60405180910390f35b3480156101eb57600080fd5b5061020660048036038101906102019190612ad1565b610701565b005b34801561021457600080fd5b5061022f600480360381019061022a9190612b11565b610818565b005b34801561023d57600080fd5b5061025860048036038101906102539190612b11565b610878565b005b34801561026657600080fd5b5061026f610898565b60405161027c9190612cba565b60405180910390f35b34801561029157600080fd5b506102ac60048036038101906102a79190612a1c565b610c79565b6040516102b99190612a8a565b60405180910390f35b3480156102ce57600080fd5b506102d7610cff565b6040516102e49190612ceb565b60405180910390f35b3480156102f957600080fd5b50610314600480360381019061030f9190612d06565b610d09565b6040516103219190612ceb565b60405180910390f35b610344600480360381019061033f9190612e68565b610dc0565b6040516103519190612ceb565b60405180910390f35b34801561036657600080fd5b50610381600480360381019061037c9190612a1c565b610e02565b60405161038e9190612f2c565b60405180910390f35b3480156103a357600080fd5b506103ac610f0a565b6040516103b991906129c4565b60405180910390f35b6103dc60048036038101906103d79190612a1c565b610f9c565b005b3480156103ea57600080fd5b5061040560048036038101906104009190612f73565b61118e565b005b34801561041357600080fd5b5061042e60048036038101906104299190613054565b6111a4565b005b61044a60048036038101906104459190612a1c565b611206565b005b34801561045857600080fd5b50610473600480360381019061046e9190612a1c565b6112a0565b60405161048091906129c4565b60405180910390f35b34801561049557600080fd5b5061049e6113b2565b6040516104ab9190612f2c565b60405180910390f35b3480156104c057600080fd5b506104c96114c7565b6040516104d69190612cba565b60405180910390f35b3480156104eb57600080fd5b50610506600480360381019061050191906130d7565b611699565b6040516105139190612919565b60405180910390f35b34801561052857600080fd5b5061053161172d565b60405161053e9190612ceb565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061061257507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061062257506106218261173e565b5b9050919050565b60606000805461063890613146565b80601f016020809104026020016040519081016040528092919081815260200182805461066490613146565b80156106b15780601f10610686576101008083540402835291602001916106b1565b820191906000526020600020905b81548152906001019060200180831161069457829003601f168201915b5050505050905090565b60006106c6826117a8565b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061070c82610c79565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361077c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610773906131e9565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1661079b6117f3565b73ffffffffffffffffffffffffffffffffffffffff1614806107ca57506107c9816107c46117f3565b611699565b5b610809576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108009061327b565b60405180910390fd5b61081383836117fb565b505050565b6108296108236117f3565b826118b4565b610868576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085f9061330d565b60405180910390fd5b610873838383611949565b505050565b610893838383604051806020016040528060008152506111a4565b505050565b606060006108a66007611c42565b9050600080600080600090505b848110156109cc573373ffffffffffffffffffffffffffffffffffffffff16600b60006001846108e3919061335c565b815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614806109a457503373ffffffffffffffffffffffffffffffffffffffff16600b600060018461095a919061335c565b815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b156109b9576001846109b6919061335c565b93505b80806109c490613390565b9150506108b3565b5060008367ffffffffffffffff8111156109e9576109e8612d3d565b5b604051908082528060200260200182016040528015610a2257816020015b610a0f612808565b815260200190600190039081610a075790505b50905060005b85811015610c6d573373ffffffffffffffffffffffffffffffffffffffff16600b6000600184610a58919061335c565b815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480610b1957503373ffffffffffffffffffffffffffffffffffffffff16600b6000600184610acf919061335c565b815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b15610c5a57600181610b2b919061335c565b92506000600b60008581526020019081526020016000209050806040518060a0016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600382015481526020016004820160009054906101000a900460ff161515151581525050838681518110610c3e57610c3d6133d8565b5b6020026020010181905250600185610c56919061335c565b9450505b8080610c6590613390565b915050610a28565b50809550505050505090565b600080610c8583611c50565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610cf6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ced90613453565b60405180910390fd5b80915050919050565b6000600a54905090565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610d79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d70906134e5565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000610dcc6007611c8d565b6000610dd86007611c42565b9050610de43382611ca3565b610dee8185611cc1565b610df88184611d2e565b8091505092915050565b610e0a612808565b600b60008381526020019081526020016000206040518060a0016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600382015481526020016004820160009054906101000a900460ff1615151515815250509050919050565b606060018054610f1990613146565b80601f0160208091040260200160405190810160405280929190818152602001828054610f4590613146565b8015610f925780601f10610f6757610100808354040283529160200191610f92565b820191906000526020600020905b815481529060010190602001808311610f7557829003601f168201915b5050505050905090565b6000600b60008381526020019081526020016000206003015490506000600b600084815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050813414611034576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102b90613577565b60405180910390fd5b6001600b600085815260200190815260200160002060040160006101000a81548160ff02191690831515021790555033600b600085815260200190815260200160002060020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506110c26008611c8d565b6110cd303385611949565b6110d73084610701565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc600a549081150290604051600060405180830381858888f19350505050158015611141573d6000803e3d6000fd5b508073ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015611188573d6000803e3d6000fd5b50505050565b6111a06111996117f3565b8383611f31565b5050565b6111b56111af6117f3565b836118b4565b6111f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111eb9061330d565b60405180910390fd5b6112008484848461209d565b50505050565b3373ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611296576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128d90613609565b60405180910390fd5b80600a8190555050565b60606112ab826117a8565b60006006600084815260200190815260200160002080546112cb90613146565b80601f01602080910402602001604051908101604052809291908181526020018280546112f790613146565b80156113445780601f1061131957610100808354040283529160200191611344565b820191906000526020600020905b81548152906001019060200180831161132757829003601f168201915b5050505050905060006113556120f9565b9050600081510361136a5781925050506113ad565b60008251111561139f578082604051602001611387929190613665565b604051602081830303815290604052925050506113ad565b6113a884612110565b925050505b919050565b6113ba612808565b60006113c66007611c42565b9050600b60008281526020019081526020016000206040518060a0016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600382015481526020016004820160009054906101000a900460ff16151515158152505091505090565b606060006114d56007611c42565b905060008167ffffffffffffffff8111156114f3576114f2612d3d565b5b60405190808252806020026020018201604052801561152c57816020015b611519612808565b8152602001906001900390816115115790505b50905060008080600090505b8481101561168e5760018161154d919061335c565b91506000600b60008481526020019081526020016000209050806040518060a0016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600382015481526020016004820160009054906101000a900460ff1615151515815250508585815181106116605761165f6133d8565b5b6020026020010181905250600184611678919061335c565b935050808061168690613390565b915050611538565b508294505050505090565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60006117396007611c42565b905090565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6117b181612178565b6117f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e790613453565b60405180910390fd5b50565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff1661186e83610c79565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000806118c083610c79565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061190257506119018185611699565b5b8061194057508373ffffffffffffffffffffffffffffffffffffffff16611928846106bb565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff1661196982610c79565b73ffffffffffffffffffffffffffffffffffffffff16146119bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b6906136fb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a259061378d565b60405180910390fd5b611a3b83838360016121b9565b8273ffffffffffffffffffffffffffffffffffffffff16611a5b82610c79565b73ffffffffffffffffffffffffffffffffffffffff1614611ab1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa8906136fb565b60405180910390fd5b6004600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611c3d83838360016121bf565b505050565b600081600001549050919050565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6001816000016000828254019250508190555050565b611cbd8282604051806020016040528060008152506121c5565b5050565b611cca82612178565b611d09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d009061381f565b60405180910390fd5b80600660008481526020019081526020016000209081611d2991906139eb565b505050565b600a543414611d72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d6990613b2f565b60405180910390fd5b60008111611db5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dac90613bc1565b60405180910390fd5b6040518060a001604052808381526020013073ffffffffffffffffffffffffffffffffffffffff1681526020013373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200160011515815250600b60008481526020019081526020016000206000820151816000015560208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506060820151816003015560808201518160040160006101000a81548160ff021916908315150217905550905050611eee333084611949565b817f9339409317fd01fabff48b703019016f49159bacc801ae872d2ca637d226e4c03033846001604051611f259493929190613be1565b60405180910390a25050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9690613c72565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516120909190612919565b60405180910390a3505050565b6120a8848484611949565b6120b484848484612220565b6120f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ea90613d04565b60405180910390fd5b50505050565b606060405180602001604052806000815250905090565b606061211b826117a8565b60006121256120f9565b905060008151116121455760405180602001604052806000815250612170565b8061214f846123a7565b604051602001612160929190613665565b6040516020818303038152906040525b915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff1661219a83611c50565b73ffffffffffffffffffffffffffffffffffffffff1614159050919050565b50505050565b50505050565b6121cf8383612475565b6121dc6000848484612220565b61221b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161221290613d04565b60405180910390fd5b505050565b60006122418473ffffffffffffffffffffffffffffffffffffffff16612692565b1561239a578373ffffffffffffffffffffffffffffffffffffffff1663150b7a0261226a6117f3565b8786866040518563ffffffff1660e01b815260040161228c9493929190613d79565b6020604051808303816000875af19250505080156122c857506040513d601f19601f820116820180604052508101906122c59190613dda565b60015b61234a573d80600081146122f8576040519150601f19603f3d011682016040523d82523d6000602084013e6122fd565b606091505b506000815103612342576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161233990613d04565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161491505061239f565b600190505b949350505050565b6060600060016123b6846126b5565b01905060008167ffffffffffffffff8111156123d5576123d4612d3d565b5b6040519080825280601f01601f1916602001820160405280156124075781602001600182028036833780820191505090505b509050600082602001820190505b60011561246a578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a858161245e5761245d613e07565b5b04945060008503612415575b819350505050919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036124e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124db90613e82565b60405180910390fd5b6124ed81612178565b1561252d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161252490613eee565b60405180910390fd5b61253b6000838360016121b9565b61254481612178565b15612584576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257b90613eee565b60405180910390fd5b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461268e6000838360016121bf565b5050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310612713577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000838161270957612708613e07565b5b0492506040810190505b6d04ee2d6d415b85acef81000000008310612750576d04ee2d6d415b85acef8100000000838161274657612745613e07565b5b0492506020810190505b662386f26fc10000831061277f57662386f26fc10000838161277557612774613e07565b5b0492506010810190505b6305f5e10083106127a8576305f5e100838161279e5761279d613e07565b5b0492506008810190505b61271083106127cd5761271083816127c3576127c2613e07565b5b0492506004810190505b606483106127f057606483816127e6576127e5613e07565b5b0492506002810190505b600a83106127ff576001810190505b80915050919050565b6040518060a0016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600081526020016000151581525090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6128ae81612879565b81146128b957600080fd5b50565b6000813590506128cb816128a5565b92915050565b6000602082840312156128e7576128e661286f565b5b60006128f5848285016128bc565b91505092915050565b60008115159050919050565b612913816128fe565b82525050565b600060208201905061292e600083018461290a565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561296e578082015181840152602081019050612953565b60008484015250505050565b6000601f19601f8301169050919050565b600061299682612934565b6129a0818561293f565b93506129b0818560208601612950565b6129b98161297a565b840191505092915050565b600060208201905081810360008301526129de818461298b565b905092915050565b6000819050919050565b6129f9816129e6565b8114612a0457600080fd5b50565b600081359050612a16816129f0565b92915050565b600060208284031215612a3257612a3161286f565b5b6000612a4084828501612a07565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612a7482612a49565b9050919050565b612a8481612a69565b82525050565b6000602082019050612a9f6000830184612a7b565b92915050565b612aae81612a69565b8114612ab957600080fd5b50565b600081359050612acb81612aa5565b92915050565b60008060408385031215612ae857612ae761286f565b5b6000612af685828601612abc565b9250506020612b0785828601612a07565b9150509250929050565b600080600060608486031215612b2a57612b2961286f565b5b6000612b3886828701612abc565b9350506020612b4986828701612abc565b9250506040612b5a86828701612a07565b9150509250925092565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612b99816129e6565b82525050565b6000612baa82612a49565b9050919050565b612bba81612b9f565b82525050565b612bc9816128fe565b82525050565b60a082016000820151612be56000850182612b90565b506020820151612bf86020850182612bb1565b506040820151612c0b6040850182612bb1565b506060820151612c1e6060850182612b90565b506080820151612c316080850182612bc0565b50505050565b6000612c438383612bcf565b60a08301905092915050565b6000602082019050919050565b6000612c6782612b64565b612c718185612b6f565b9350612c7c83612b80565b8060005b83811015612cad578151612c948882612c37565b9750612c9f83612c4f565b925050600181019050612c80565b5085935050505092915050565b60006020820190508181036000830152612cd48184612c5c565b905092915050565b612ce5816129e6565b82525050565b6000602082019050612d006000830184612cdc565b92915050565b600060208284031215612d1c57612d1b61286f565b5b6000612d2a84828501612abc565b91505092915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612d758261297a565b810181811067ffffffffffffffff82111715612d9457612d93612d3d565b5b80604052505050565b6000612da7612865565b9050612db38282612d6c565b919050565b600067ffffffffffffffff821115612dd357612dd2612d3d565b5b612ddc8261297a565b9050602081019050919050565b82818337600083830152505050565b6000612e0b612e0684612db8565b612d9d565b905082815260208101848484011115612e2757612e26612d38565b5b612e32848285612de9565b509392505050565b600082601f830112612e4f57612e4e612d33565b5b8135612e5f848260208601612df8565b91505092915050565b60008060408385031215612e7f57612e7e61286f565b5b600083013567ffffffffffffffff811115612e9d57612e9c612874565b5b612ea985828601612e3a565b9250506020612eba85828601612a07565b9150509250929050565b60a082016000820151612eda6000850182612b90565b506020820151612eed6020850182612bb1565b506040820151612f006040850182612bb1565b506060820151612f136060850182612b90565b506080820151612f266080850182612bc0565b50505050565b600060a082019050612f416000830184612ec4565b92915050565b612f50816128fe565b8114612f5b57600080fd5b50565b600081359050612f6d81612f47565b92915050565b60008060408385031215612f8a57612f8961286f565b5b6000612f9885828601612abc565b9250506020612fa985828601612f5e565b9150509250929050565b600067ffffffffffffffff821115612fce57612fcd612d3d565b5b612fd78261297a565b9050602081019050919050565b6000612ff7612ff284612fb3565b612d9d565b90508281526020810184848401111561301357613012612d38565b5b61301e848285612de9565b509392505050565b600082601f83011261303b5761303a612d33565b5b813561304b848260208601612fe4565b91505092915050565b6000806000806080858703121561306e5761306d61286f565b5b600061307c87828801612abc565b945050602061308d87828801612abc565b935050604061309e87828801612a07565b925050606085013567ffffffffffffffff8111156130bf576130be612874565b5b6130cb87828801613026565b91505092959194509250565b600080604083850312156130ee576130ed61286f565b5b60006130fc85828601612abc565b925050602061310d85828601612abc565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061315e57607f821691505b60208210810361317157613170613117565b5b50919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b60006131d360218361293f565b91506131de82613177565b604082019050919050565b60006020820190508181036000830152613202816131c6565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c000000602082015250565b6000613265603d8361293f565b915061327082613209565b604082019050919050565b6000602082019050818103600083015261329481613258565b9050919050565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206f7220617070726f76656400000000000000000000000000000000000000602082015250565b60006132f7602d8361293f565b91506133028261329b565b604082019050919050565b60006020820190508181036000830152613326816132ea565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613367826129e6565b9150613372836129e6565b925082820190508082111561338a5761338961332d565b5b92915050565b600061339b826129e6565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036133cd576133cc61332d565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b600061343d60188361293f565b915061344882613407565b602082019050919050565b6000602082019050818103600083015261346c81613430565b9050919050565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b60006134cf60298361293f565b91506134da82613473565b604082019050919050565b600060208201905081810360008301526134fe816134c2565b9050919050565b7f506c65617365207375626d6974207468652061736b696e67207072696365206960008201527f6e206f7264657220746f20636f6d706c65746520746865207075726368617365602082015250565b600061356160408361293f565b915061356c82613505565b604082019050919050565b6000602082019050818103600083015261359081613554565b9050919050565b7f4f6e6c79206f776e65722063616e20757064617465206c697374696e6720707260008201527f6963650000000000000000000000000000000000000000000000000000000000602082015250565b60006135f360238361293f565b91506135fe82613597565b604082019050919050565b60006020820190508181036000830152613622816135e6565b9050919050565b600081905092915050565b600061363f82612934565b6136498185613629565b9350613659818560208601612950565b80840191505092915050565b60006136718285613634565b915061367d8284613634565b91508190509392505050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b60006136e560258361293f565b91506136f082613689565b604082019050919050565b60006020820190508181036000830152613714816136d8565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061377760248361293f565b91506137828261371b565b604082019050919050565b600060208201905081810360008301526137a68161376a565b9050919050565b7f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60008201527f6578697374656e7420746f6b656e000000000000000000000000000000000000602082015250565b6000613809602e8361293f565b9150613814826137ad565b604082019050919050565b60006020820190508181036000830152613838816137fc565b9050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026138a17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613864565b6138ab8683613864565b95508019841693508086168417925050509392505050565b6000819050919050565b60006138e86138e36138de846129e6565b6138c3565b6129e6565b9050919050565b6000819050919050565b613902836138cd565b61391661390e826138ef565b848454613871565b825550505050565b600090565b61392b61391e565b6139368184846138f9565b505050565b5b8181101561395a5761394f600082613923565b60018101905061393c565b5050565b601f82111561399f576139708161383f565b61397984613854565b81016020851015613988578190505b61399c61399485613854565b83018261393b565b50505b505050565b600082821c905092915050565b60006139c2600019846008026139a4565b1980831691505092915050565b60006139db83836139b1565b9150826002028217905092915050565b6139f482612934565b67ffffffffffffffff811115613a0d57613a0c612d3d565b5b613a178254613146565b613a2282828561395e565b600060209050601f831160018114613a555760008415613a43578287015190505b613a4d85826139cf565b865550613ab5565b601f198416613a638661383f565b60005b82811015613a8b57848901518255600182019150602085019450602081019050613a66565b86831015613aa85784890151613aa4601f8916826139b1565b8355505b6001600288020188555050505b505050505050565b7f486f706566756c6c792073656e64696e672074686520636f727265637420707260008201527f6963650000000000000000000000000000000000000000000000000000000000602082015250565b6000613b1960238361293f565b9150613b2482613abd565b604082019050919050565b60006020820190508181036000830152613b4881613b0c565b9050919050565b7f4d616b652073757265207468652070726963652069736e2774206e656761746960008201527f7665000000000000000000000000000000000000000000000000000000000000602082015250565b6000613bab60228361293f565b9150613bb682613b4f565b604082019050919050565b60006020820190508181036000830152613bda81613b9e565b9050919050565b6000608082019050613bf66000830187612a7b565b613c036020830186612a7b565b613c106040830185612cdc565b613c1d606083018461290a565b95945050505050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b6000613c5c60198361293f565b9150613c6782613c26565b602082019050919050565b60006020820190508181036000830152613c8b81613c4f565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b6000613cee60328361293f565b9150613cf982613c92565b604082019050919050565b60006020820190508181036000830152613d1d81613ce1565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000613d4b82613d24565b613d558185613d2f565b9350613d65818560208601612950565b613d6e8161297a565b840191505092915050565b6000608082019050613d8e6000830187612a7b565b613d9b6020830186612a7b565b613da86040830185612cdc565b8181036060830152613dba8184613d40565b905095945050505050565b600081519050613dd4816128a5565b92915050565b600060208284031215613df057613def61286f565b5b6000613dfe84828501613dc5565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b6000613e6c60208361293f565b9150613e7782613e36565b602082019050919050565b60006020820190508181036000830152613e9b81613e5f565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b6000613ed8601c8361293f565b9150613ee382613ea2565b602082019050919050565b60006020820190508181036000830152613f0781613ecb565b905091905056fea26469706673582212200635dd3285f8bc7759fb7afb48cc7c1917eff3acb67c5f2d01a395942292039564736f6c63430008120033