{
  "_format": "hh-sol-artifact-1",
  "contractName": "RedPacketHandler",
  "sourceName": "contracts/V3/handler/RedPackageHandler.sol",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "version",
          "type": "uint8"
        }
      ],
      "name": "Initialized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "ruleHash",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "packageId",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "caller",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "time",
          "type": "uint256"
        }
      ],
      "name": "RedPacketClaimRemain",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "ruleHash",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "packageId",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "creator",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "time",
          "type": "uint256"
        }
      ],
      "name": "RedPacketCreate",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "ruleHash",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "packageId",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "opener",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "time",
          "type": "uint256"
        }
      ],
      "name": "RedPacketOpen",
      "type": "event"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "engine",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "clusterArea",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "stateCounter",
              "type": "address"
            },
            {
              "internalType": "uint32",
              "name": "clusterId",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "taskId",
              "type": "uint32"
            },
            {
              "internalType": "address",
              "name": "claimer",
              "type": "address"
            },
            {
              "internalType": "uint8",
              "name": "io",
              "type": "uint8"
            },
            {
              "internalType": "uint16",
              "name": "round",
              "type": "uint16"
            },
            {
              "internalType": "uint8",
              "name": "branch",
              "type": "uint8"
            },
            {
              "internalType": "uint8",
              "name": "tokenSlotIndex",
              "type": "uint8"
            }
          ],
          "internalType": "struct IHandler.Claim",
          "name": "claim",
          "type": "tuple"
        }
      ],
      "name": "claimIOAddressBranchToken",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "cname",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "engine",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "clusterArea",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "stateCounter",
              "type": "address"
            },
            {
              "internalType": "uint32",
              "name": "clusterId",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "taskId",
              "type": "uint32"
            },
            {
              "internalType": "address",
              "name": "claimer",
              "type": "address"
            },
            {
              "internalType": "uint8",
              "name": "io",
              "type": "uint8"
            },
            {
              "internalType": "uint16",
              "name": "round",
              "type": "uint16"
            },
            {
              "internalType": "uint8",
              "name": "branch",
              "type": "uint8"
            },
            {
              "internalType": "uint8",
              "name": "tokenSlotIndex",
              "type": "uint8"
            }
          ],
          "internalType": "struct IHandler.Claim",
          "name": "claim",
          "type": "tuple"
        }
      ],
      "name": "getClaimIOAddressBranchToken",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string[]",
          "name": "areaNameList",
          "type": "string[]"
        }
      ],
      "name": "getEngineAreaList",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "",
          "type": "address[]"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getIOBranches",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint8[]",
              "name": "inBranch",
              "type": "uint8[]"
            },
            {
              "internalType": "uint8[]",
              "name": "outBranch",
              "type": "uint8[]"
            }
          ],
          "internalType": "struct IHandler.IOBranch[]",
          "name": "branches",
          "type": "tuple[]"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "engine",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "clusterArea",
          "type": "address"
        },
        {
          "internalType": "uint32",
          "name": "clusterId",
          "type": "uint32"
        },
        {
          "internalType": "address",
          "name": "stateCounter",
          "type": "address"
        },
        {
          "internalType": "uint32",
          "name": "taskId",
          "type": "uint32"
        },
        {
          "internalType": "uint16",
          "name": "round",
          "type": "uint16"
        }
      ],
      "name": "getInputAddressRound",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "engine",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "clusterArea",
          "type": "address"
        },
        {
          "internalType": "uint32",
          "name": "clusterId",
          "type": "uint32"
        },
        {
          "internalType": "address",
          "name": "stateCounter",
          "type": "address"
        },
        {
          "internalType": "uint32",
          "name": "taskId",
          "type": "uint32"
        },
        {
          "internalType": "uint16",
          "name": "round",
          "type": "uint16"
        }
      ],
      "name": "getOutputAddressRound",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint32",
          "name": "clusterId",
          "type": "uint32"
        },
        {
          "internalType": "uint16",
          "name": "ruleSlotIndex",
          "type": "uint16"
        },
        {
          "internalType": "uint8",
          "name": "branch",
          "type": "uint8"
        }
      ],
      "name": "getRuleGroupSlotArgs",
      "outputs": [
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "engine",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "clusterArea",
              "type": "address"
            },
            {
              "internalType": "uint32",
              "name": "clusterId",
              "type": "uint32"
            },
            {
              "internalType": "uint16",
              "name": "ruleSlotIndexInput",
              "type": "uint16"
            },
            {
              "internalType": "uint16",
              "name": "ruleSlotIndexOutput",
              "type": "uint16"
            },
            {
              "internalType": "uint8",
              "name": "branch",
              "type": "uint8"
            },
            {
              "internalType": "address",
              "name": "stateCounter",
              "type": "address"
            },
            {
              "internalType": "uint32",
              "name": "taskId",
              "type": "uint32"
            },
            {
              "internalType": "address",
              "name": "caller",
              "type": "address"
            },
            {
              "internalType": "uint8",
              "name": "cmd",
              "type": "uint8"
            },
            {
              "internalType": "bytes",
              "name": "args",
              "type": "bytes"
            }
          ],
          "internalType": "struct Handler.StateParams",
          "name": "params",
          "type": "tuple"
        }
      ],
      "name": "getState",
      "outputs": [
        {
          "internalType": "bytes[]",
          "name": "",
          "type": "bytes[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "engine",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "outAddress",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "clusterArea",
          "type": "address"
        },
        {
          "internalType": "uint32",
          "name": "clusterId",
          "type": "uint32"
        },
        {
          "internalType": "address",
          "name": "stateCounter",
          "type": "address"
        },
        {
          "internalType": "uint32",
          "name": "taskId",
          "type": "uint32"
        },
        {
          "internalType": "bytes",
          "name": "args",
          "type": "bytes"
        },
        {
          "internalType": "uint16",
          "name": "round",
          "type": "uint16"
        }
      ],
      "name": "getTokenBranch",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256[]",
              "name": "valueList",
              "type": "uint256[]"
            }
          ],
          "internalType": "struct TokenHandler.TokenBranch",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "caller",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "stateCounter",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "poolFee",
              "type": "address"
            },
            {
              "components": [
                {
                  "internalType": "address",
                  "name": "caller",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "clusterArea",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "lastHandler",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "snippet",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "valueTime",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "internalType": "uint32",
                  "name": "taskId",
                  "type": "uint32"
                },
                {
                  "internalType": "uint32",
                  "name": "parentTaskId",
                  "type": "uint32"
                },
                {
                  "internalType": "uint32",
                  "name": "clusterId",
                  "type": "uint32"
                },
                {
                  "internalType": "uint8",
                  "name": "state",
                  "type": "uint8"
                },
                {
                  "components": [
                    {
                      "internalType": "uint8",
                      "name": "erc",
                      "type": "uint8"
                    },
                    {
                      "internalType": "address",
                      "name": "token",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "id",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "amount",
                      "type": "uint256"
                    },
                    {
                      "components": [
                        {
                          "internalType": "uint32",
                          "name": "attrId",
                          "type": "uint32"
                        },
                        {
                          "internalType": "int40",
                          "name": "attrAmount",
                          "type": "int40"
                        }
                      ],
                      "internalType": "struct Attribute.AttributeIn[]",
                      "name": "attrInList",
                      "type": "tuple[]"
                    }
                  ],
                  "internalType": "struct Token.Token[]",
                  "name": "inTokenList",
                  "type": "tuple[]"
                },
                {
                  "internalType": "bytes",
                  "name": "args",
                  "type": "bytes"
                }
              ],
              "internalType": "struct Task.Task",
              "name": "task",
              "type": "tuple"
            },
            {
              "internalType": "uint8",
              "name": "state",
              "type": "uint8"
            }
          ],
          "internalType": "struct Handler.Process",
          "name": "param",
          "type": "tuple"
        },
        {
          "components": [
            {
              "internalType": "address",
              "name": "handler",
              "type": "address"
            },
            {
              "internalType": "uint8",
              "name": "code",
              "type": "uint8"
            },
            {
              "internalType": "string",
              "name": "msg",
              "type": "string"
            },
            {
              "internalType": "bytes",
              "name": "args",
              "type": "bytes"
            }
          ],
          "internalType": "struct Handler.Result",
          "name": "preResult",
          "type": "tuple"
        }
      ],
      "name": "process",
      "outputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "handler",
              "type": "address"
            },
            {
              "internalType": "uint8",
              "name": "code",
              "type": "uint8"
            },
            {
              "internalType": "string",
              "name": "msg",
              "type": "string"
            },
            {
              "internalType": "bytes",
              "name": "args",
              "type": "bytes"
            }
          ],
          "internalType": "struct Handler.Result",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint32",
          "name": "clusterId",
          "type": "uint32"
        },
        {
          "components": [
            {
              "components": [
                {
                  "components": [
                    {
                      "components": [
                        {
                          "internalType": "uint8",
                          "name": "erc",
                          "type": "uint8"
                        },
                        {
                          "internalType": "address",
                          "name": "token",
                          "type": "address"
                        },
                        {
                          "internalType": "uint256[]",
                          "name": "valueList",
                          "type": "uint256[]"
                        }
                      ],
                      "internalType": "struct Token.TokenTemplate",
                      "name": "tokenTemplate",
                      "type": "tuple"
                    },
                    {
                      "internalType": "uint8",
                      "name": "rule",
                      "type": "uint8"
                    },
                    {
                      "internalType": "address[]",
                      "name": "ioAddressList",
                      "type": "address[]"
                    },
                    {
                      "internalType": "uint256[]",
                      "name": "valueList",
                      "type": "uint256[]"
                    }
                  ],
                  "internalType": "struct Rule.TokenSlot[]",
                  "name": "tokenSlotList",
                  "type": "tuple[]"
                },
                {
                  "internalType": "uint8",
                  "name": "branch",
                  "type": "uint8"
                },
                {
                  "internalType": "address",
                  "name": "poolToken",
                  "type": "address"
                },
                {
                  "internalType": "address[]",
                  "name": "handlerList",
                  "type": "address[]"
                },
                {
                  "internalType": "bytes[]",
                  "name": "argsList",
                  "type": "bytes[]"
                }
              ],
              "internalType": "struct Rule.GroupSlot[]",
              "name": "groupSlotList",
              "type": "tuple[]"
            },
            {
              "internalType": "uint8[]",
              "name": "ruleSlotBound",
              "type": "uint8[]"
            },
            {
              "components": [
                {
                  "internalType": "uint16",
                  "name": "ruleSlotIndexInput",
                  "type": "uint16"
                },
                {
                  "internalType": "uint16",
                  "name": "ruleSlotIndexOutput",
                  "type": "uint16"
                },
                {
                  "internalType": "uint8",
                  "name": "state",
                  "type": "uint8"
                },
                {
                  "internalType": "uint32",
                  "name": "totalCount",
                  "type": "uint32"
                },
                {
                  "internalType": "uint8",
                  "name": "durationType",
                  "type": "uint8"
                },
                {
                  "internalType": "uint32",
                  "name": "delayTimestamp",
                  "type": "uint32"
                },
                {
                  "internalType": "uint32",
                  "name": "delayBlockNumber",
                  "type": "uint32"
                },
                {
                  "internalType": "uint64",
                  "name": "handlerCount",
                  "type": "uint64"
                },
                {
                  "internalType": "address[]",
                  "name": "handlerList",
                  "type": "address[]"
                },
                {
                  "internalType": "bytes[]",
                  "name": "handlerArgsList",
                  "type": "bytes[]"
                },
                {
                  "internalType": "address",
                  "name": "snippet",
                  "type": "address"
                }
              ],
              "internalType": "struct Rule.Rule[]",
              "name": "ruleList",
              "type": "tuple[]"
            },
            {
              "components": [
                {
                  "internalType": "uint32",
                  "name": "attrId",
                  "type": "uint32"
                },
                {
                  "internalType": "string",
                  "name": "name",
                  "type": "string"
                },
                {
                  "internalType": "string",
                  "name": "symbol",
                  "type": "string"
                },
                {
                  "internalType": "string",
                  "name": "uri",
                  "type": "string"
                },
                {
                  "internalType": "uint8",
                  "name": "level",
                  "type": "uint8"
                }
              ],
              "internalType": "struct Attribute.Attribute[]",
              "name": "attrList",
              "type": "tuple[]"
            },
            {
              "internalType": "uint8[]",
              "name": "attrStateList",
              "type": "uint8[]"
            },
            {
              "internalType": "address[]",
              "name": "deployerList",
              "type": "address[]"
            },
            {
              "internalType": "address[]",
              "name": "adminList",
              "type": "address[]"
            },
            {
              "internalType": "uint32",
              "name": "delayTimestamp",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "delayBlockNumber",
              "type": "uint32"
            },
            {
              "internalType": "uint8",
              "name": "state",
              "type": "uint8"
            },
            {
              "internalType": "string",
              "name": "description",
              "type": "string"
            }
          ],
          "internalType": "struct Cluster.Cluster",
          "name": "cluster",
          "type": "tuple"
        }
      ],
      "name": "regRule",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint32",
          "name": "clusterId",
          "type": "uint32"
        },
        {
          "internalType": "uint16",
          "name": "ruleSlotIndex",
          "type": "uint16"
        },
        {
          "internalType": "uint8",
          "name": "branch",
          "type": "uint8"
        },
        {
          "internalType": "bytes",
          "name": "args",
          "type": "bytes"
        }
      ],
      "name": "regRuleGroupSlotArgs",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "engineAreaList",
          "type": "address[]"
        }
      ],
      "name": "setEngineAreaList",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint32",
          "name": "clusterId",
          "type": "uint32"
        },
        {
          "internalType": "uint16",
          "name": "ruleSlotIndexInput",
          "type": "uint16"
        },
        {
          "internalType": "uint16",
          "name": "ruleSlotIndexOutput",
          "type": "uint16"
        },
        {
          "internalType": "uint8",
          "name": "cmd",
          "type": "uint8"
        },
        {
          "internalType": "bytes",
          "name": "args",
          "type": "bytes"
        }
      ],
      "name": "updateArgs",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "version",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b50615f4780620000216000396000f3fe608060405234801561001057600080fd5b506004361061010c5760003560e01c80638129fc1c1161009d5780638129fc1c146101e95780638da5cb5b146101f157806395edcb0814610211578063a903620c14610231578063af84b51f14610244578063b41bd78914610264578063b4b7035214610277578063d0d35b551461028a578063f2fde38b1461029d578063f2fe4fa5146102b057600080fd5b80631cc4f041146101115780631eda6e4f1461013a57806334c76b251461015a5780634b2dbcb8146101775780634b2e9b411461017757806354fd4d50146101975780635790c294146101a657806362329cc5146101bb5780636dabaf04146101ce578063715018a6146101e1575b600080fd5b61012561011f366004614092565b50600090565b60405190151581526020015b60405180910390f35b61014d6101483660046141d7565b6102bf565b6040516101319190614290565b6040805160208101909152600081525b6040516101319190614330565b61018a610185366004614343565b610378565b60405161013191906143bd565b60405160008152602001610131565b6101b96101b436600461440a565b6103a9565b005b61018a6101c936600461449d565b61042a565b6101256101dc366004614540565b610507565b6101b9610612565b6101b961064d565b6101f96106c2565b6040516001600160a01b039091168152602001610131565b61022461021f3660046147d7565b6106d1565b60405161013191906149a7565b6101b961023f366004615104565b610d6c565b6102576102523660046152b7565b610de9565b60405161013191906153d4565b6101b9610272366004615436565b61125c565b610125610285366004614092565b611382565b61016a61029836600461546a565b6113f7565b6101b96102ab3660046154b1565b61140e565b6060604051610131919061550c565b60408051602081019091526060815260006102e08a898989898e60006114ab565b60008181526069602090815260408083208151815480850282018401845293810184815295965093949092849284919084018282801561033f57602002820191906000526020600020905b81548152602001906001019080831161032b575b505050505081525050905060005b8151518110156103695780610361816155a7565b91505061034d565b509a9950505050505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505b5098975050505050505050565b6040518060400160405280600f81526020016e436c757374657252756c654172656160881b8152506065816040516103e191906155c0565b90815260405190819003602001902054336001600160a01b03909116146104235760405162461bcd60e51b815260040161041a906155dc565b60405180910390fd5b5050505050565b6060600082516001600160401b0381111561044757610447613ef5565b604051908082528060200260200182016040528015610470578160200160208202803683370190505b50905060005b815181101561050057606584828151811061049357610493615613565b60200260200101516040516104a891906155c0565b9081526040519081900360200190205482516001600160a01b03909116908390839081106104d8576104d8615613565b6001600160a01b03909216602092830291909101909101526104f9816155a7565b9050610476565b5092915050565b60006040518060400160405280601681526020017521b63ab9ba32b9293ab632a0b932b0a430b7323632b960511b81525060658160405161054891906155c0565b90815260405190819003602001902054336001600160a01b03909116146105815760405162461bcd60e51b815260040161041a906155dc565b600087878760405160200161059893929190615629565b6040516020818303038152906040528051906020012090506105e16040518060400160405280601081526020016f3ab83230ba32a0b933b9903132b3b4b760811b81525061151a565b6105ec84600061155d565b6000918252606a602052604090912063ffffffff90911690555060019695505050505050565b3361061b6106c2565b6001600160a01b0316146106415760405162461bcd60e51b815260040161041a9061564b565b61064b60006115c4565b565b60006106596001611616565b90508015610671576000805461ff0019166101001790555b6106796116a3565b80156106bf576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b6033546001600160a01b031690565b604080516080810182526000808252602082015260609181018290528181019190915260405180604001604052806006815260200165456e67696e6560d01b81525060658160405161072391906155c0565b90815260405190819003602001902054336001600160a01b039091161461075c5760405162461bcd60e51b815260040161041a906155dc565b61077d604051806060016040528060338152602001615de06033913961151a565b3083526060840151600090610791906116d2565b90506000856060015161010001516107ac87606001516116de565b6107b988606001516116fd565b6040516020016107cb93929190615629565b60405160208183030381529060405280519060200120905060006108076108028460008a606001516117229092919063ffffffff16565b61176f565b9050600061085e338960600151602001518a6060015161010001518b602001518c6060015160e0015163ffffffff1660001461084b578c6060015160e00151610855565b8c6060015160c001515b8d5160006114ab565b90506000886060015160e0015163ffffffff1660001461088657886060015160e00151610890565b886060015160c001515b63ffffffff169050600084826040516020016108b6929190918252602082015260400190565b60408051601f19818403018152828252805160209182012060008181526068835283902060608501909352603480855290945091926108fd929091615e9a9083013961151a565b6109078b866117bd565b60ff851661099f5761091b818c8989611917565b8a600001516001600160a01b031683877fece4b98fc3ff2d0ab248e9abc8900f5a7a83215c66dec56e9550328c2188480a8e60600151610140015160008151811061096857610968615613565b6020026020010151606001514260405161099292919091825263ffffffff16602082015260400190565b60405180910390a4610d43565b60001960ff861601610bc457600281015442600160c81b90910463ffffffff161015610a045760405162461bcd60e51b815260206004820152601460248201527319195859131a5b99481a185cc81c995858da195960621b604482015260640161041a565b600281015461ffff808216620100009092041610610a5a5760405162461bcd60e51b81526020600482015260136024820152723932b23830b1b5b2ba103737903932b6b0b4b760691b604482015260640161041a565b60008381526067602090815260408083208e516001600160a01b0316845290915290205460ff1615610ac35760405162461bcd60e51b815260206004820152601260248201527118d85b1b195c881a185cc818db185a5b595960721b604482015260640161041a565b610ae4604051806060016040528060348152602001615e666034913961151a565b60008381526067602090815260408083208e516001600160a01b031684528252808320805460ff19166001179055888352606a9091528120610b2b908d9087908590611b01565b905080606b600085815260200190815260200160002060008e600001516001600160a01b03166001600160a01b03168152602001908152602001600020819055508b600001516001600160a01b031684887f755409bca7e30aa7197cb560a85ba309a9bdb24df068a6bd2f18e1d6357940cb8442604051610bb6929190918252602082015260400190565b60405180910390a450610d43565b60011960ff861601610d4357600281015442600160c81b90910463ffffffff1610610c2c5760405162461bcd60e51b815260206004820152601860248201527719195859131a5b99481a185cc81b9bdd081c995858da195960421b604482015260640161041a565b8a516002820154600160281b90046001600160a01b03908116911614610c8c5760405162461bcd60e51b815260206004820152601560248201527431b0b63632b91034b9903737ba1031b932b0ba37b960591b604482015260640161041a565b8054610cd05760405162461bcd60e51b81526020600482015260136024820152723932b22830b1b5b2ba103737903932b6b0b4b760691b604482015260640161041a565b6000868152606a60205260408120610ced908d9087908590611b01565b90508b600001516001600160a01b031684887f84743c18cae5a560978ede1345e808b7ceb1ebb2f4ae55fbdfba0ead3817556e8442604051610d39929190918252602082015260400190565b60405180910390a4505b60ff8516610d5657610d568b8587611e51565b5050606460208901525095979650505050505050565b6040518060400160405280601681526020017521b63ab9ba32b9293ab632a0b932b0a430b7323632b960511b815250606581604051610dab91906155c0565b90815260405190819003602001902054336001600160a01b0390911614610de45760405162461bcd60e51b815260040161041a906155dc565b505050565b6060806000610dfe846101400151600061155d565b90506000846040015185606001518660800151604051602001610e2393929190615629565b60408051601f198184030181528282528051602091820120818401528282018590528151808403830181526060909301909152815191012061012086015190915060ff166000190161119157600081815260686020526040908190208151600880825261012082019093529091816020015b6060815260200190600190039081610e9557505060408051808201909152600c81526b1c995b585a5b905b5bdd5b9d60a21b60208201528254919550610eda91611eba565b84600081518110610eed57610eed615613565b6020026020010181905250610f296040518060400160405280600b81526020016a1d1bdd185b105b5bdd5b9d60aa1b8152508260010154611eba565b84600181518110610f3c57610f3c615613565b6020026020010181905250610f846040518060400160405280600581526020016418dbdd5b9d60da1b8152508260020160009054906101000a900461ffff1661ffff16611eba565b84600281518110610f9757610f97615613565b6020026020010181905250610fe46040518060400160405280600a81526020016918db185a5b50dbdd5b9d60b21b8152508260020160029054906101000a900461ffff1661ffff16611eba565b84600381518110610ff757610ff7615613565b602002602001018190525061104a604051806040016040528060048152602001636d6f646560e01b8152508260020160049054906101000a900460ff16600181111561104557611045615680565b611eba565b8460048151811061105d5761105d615613565b60200260200101819052506110a86040518060400160405280600781526020016631b932b0ba37b960c91b8152508260020160059054906101000a90046001600160a01b0316611fda565b846005815181106110bb576110bb615613565b602002602001018190525061110a60405180604001604052806008815260200167646561644c696e6560c01b8152508260020160199054906101000a900463ffffffff1663ffffffff16611eba565b8460068151811061111d5761111d615613565b602002602001018190525061116d60405180604001604052806009815260200168737461727454696d6560b81b8152508260030160009054906101000a900463ffffffff1663ffffffff16611eba565b8460078151811061118057611180615613565b602002602001018190525050611253565b600260ff1685610120015160ff16036112535760408051600180825281830190925290816020015b60608152602001906001900390816111b957905050925060006111e2866101400151600161206e565b604080518082018252600b81526a18db185a5b505b5bdd5b9d60aa1b6020808301919091526000868152606b82528381206001600160a01b0386168252909152919091205491925061123391611eba565b8460008151811061124657611246615613565b6020026020010181905250505b50909392505050565b336112656106c2565b6001600160a01b03161461128b5760405162461bcd60e51b815260040161041a9061564b565b60005b815181101561137e578181815181106112a9576112a9615613565b602002602001015160658383815181106112c5576112c5615613565b60200260200101516001600160a01b03166334c76b256040518163ffffffff1660e01b8152600401600060405180830381865afa15801561130a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261133291908101906156c6565b60405161133f91906155c0565b90815260405190819003602001902080546001600160a01b03929092166001600160a01b0319909216919091179055611377816155a7565b905061128e565b5050565b600060405180604001604052806006815260200165456e67696e6560d01b8152506065816040516113b391906155c0565b90815260405190819003602001902054336001600160a01b03909116146113ec5760405162461bcd60e51b815260040161041a906155dc565b600091505b50919050565b6040805160208101909152600081525b9392505050565b336114176106c2565b6001600160a01b03161461143d5760405162461bcd60e51b815260040161041a9061564b565b6001600160a01b0381166114a25760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161041a565b6106bf816115c4565b604080516001600160a01b039889166020808301919091529789168183015263ffffffff968716606082015294881660808601529290941660a084015290941660c082015261ffff90911660e08083019190915283518083039091018152610100909101909252815191012090565b6106bf8160405160240161152e9190614330565b60408051601f198184030181529190526020810180516001600160e01b031663104c13eb60e21b1790526120b9565b60008061157161156c856120c2565b6120e8565b90506115ba61159b828560ff168151811061158e5761158e615613565b60200260200101516120e8565b6002815181106115ad576115ad615613565b602002602001015161176f565b9150505b92915050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60008054610100900460ff161561165d578160ff1660011480156116395750303b155b6116555760405162461bcd60e51b815260040161041a9061570e565b506000919050565b60005460ff8084169116106116845760405162461bcd60e51b815260040161041a9061570e565b506000805460ff191660ff92909216919091179055600190565b919050565b600054610100900460ff166116ca5760405162461bcd60e51b815260040161041a9061575c565b61064b6121f1565b60606115be8230612221565b60006115be8260a001516010600060086116f891906157a7565b6122c6565b60006115be8260a0015160106000600861171791906157a7565b6116f89060106157a7565b61172a613df2565b61174c836117398460016157ba565b60ff168151811061158e5761158e615613565b60028151811061175e5761175e615613565b602002602001015190509392505050565b80516000901580159061178457508151602110155b61178d57600080fd5b600080611799846122e5565b8151919350915060208210156117b55760208290036101000a90045b949350505050565b60ff811615806117d0575060ff81166001145b806117de575060ff81166002145b1561137e5760006117f2836060015161232c565b905060ff821661184f5760ff811660011461184f5760405162461bcd60e51b815260206004820152601f60248201527f434d445f5245445f5041434b45545f4e4557206272616e6368206572726f7200604482015260640161041a565b60001960ff8316016118ae5760ff81166002146118ae5760405162461bcd60e51b815260206004820181905260248201527f434d445f5245445f5041434b45545f4f50454e206272616e6368206572726f72604482015260640161041a565b60011960ff831601610de45760ff8116600314610de45760405162461bcd60e51b815260206004820152602160248201527f434d445f5245445f5041434b45545f434c41494d5f52454d41494e206572726f6044820152603960f91b606482015260840161041a565b606083015161192c9061080290846001611722565b60028501805461ffff191661ffff9290921691909117905560608301516101400151805160009061195f5761195f615613565b60200260200101516060015184600001819055508260600151610140015160008151811061198f5761198f615613565b60200260200101516060015184600101819055506119c061080283600286606001516117229092919063ffffffff16565b6119ca90426157a7565b60028501805463ffffffff60c81b1916600160c81b63ffffffff938416021790556003808601805463ffffffff19164284161790556060850151611a149261080292869161172216565b60ff166001811115611a2857611a28615680565b60028501805464ff000000001916600160201b836001811115611a4d57611a4d615680565b021790555082516002850180546001600160a01b03909216600160281b02600160281b600160c81b0319831681179091556000838152606a60205260408120549092611aa19261ffff9081169116176157d3565b905084600101548111156104235760405162461bcd60e51b815260206004820152602160248201527f616d6f756e74206e6f7420656e6f75676820666f72207375636820636f6e66696044820152606760f81b606482015260840161041a565b600080611b0c612351565b9050611b246040518060200160405280606081525090565b60016060830152606560408301526002850154600160c81b900463ffffffff164211611b51576002611b54565b60035b60ff16825260408051600180825281830190925290602080830190803683375050506101408301526040805160018082528183019092529060208083019080368337505050610160830152600161012083015260608701516020908101516040805163050938c360e21b815290516000936001600160a01b0390931692631424e30c92600480820193918290030181865afa158015611bf7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c1b91906157f5565b6001600160a01b0316632c34025e89606001516101000151611c408b606001516116fd565b6040516001600160e01b031960e085901b16815263ffffffff92909216600483015261ffff16602482015260656044820152606401600060405180830381865afa158015611c92573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611cba9190810190615ada565b915050600360ff168160000151600081518110611cd957611cd9615613565b6020026020010151600001516000015160ff1603611d61576000611d1e8260000151600081518110611d0d57611d0d615613565b602002602001015160000151612398565b905080600081518110611d3357611d33615613565b6020026020010151846101400151600081518110611d5357611d53615613565b602002602001018181525050505b611d916040518060400160405280600f81526020016e5f70726f63657373436c61696d203160881b81525061151a565b611d9c888787612507565b836101600151600081518110611db457611db4615613565b602002602001018181525050826101600151600081518110611dd857611dd8615613565b60200260200101518660000154611def9190615bcb565b8655611dfb828461286a565b6000878152606960209081526040909120835180518593611e20928492910190613e0c565b50905050826101600151600081518110611e3c57611e3c615613565b60200260200101519350505050949350505050565b6000611e5b612351565b9050611e736040518060200160405280606081525090565b6064604083015260016020830152611e8b818361286a565b6000848152606960209081526040909120825180518493611eb0928492910190613e0c565b5050505050505050565b60606000611ec784612e62565b90506000611ed484612e6d565b9050611f176040518060400160405280600e81526020016d0b4b4b4b4b4b4b481d1bd55a5b9d60921b815250611f1283611f0d90615bde565b612e80565b612ecc565b60408051600380825260808201909252600091816020015b6060815260200190600190039081611f2f5790505090508281600081518110611f5a57611f5a615613565b6020026020010181905250611f8a604051806040016040528060048152602001631d5a5b9d60e21b815250612e62565b81600181518110611f9d57611f9d615613565b60200260200101819052508181600281518110611fbc57611fbc615613565b6020026020010181905250611fd081612f11565b9695505050505050565b60606000611fe784612e62565b90506000611ff484612f8f565b6040805160038082526080820190925291925060009190816020015b6060815260200190600190039081612010579050509050828160008151811061203b5761203b615613565b6020026020010181905250611f8a604051806040016040528060078152602001666164647265737360c81b815250612e62565b60008061207d61156c856120c2565b90506115ba61209a828560ff168151811061158e5761158e615613565b6002815181106120ac576120ac615613565b6020026020010151612fb2565b6106bf81612fcc565b6120ca613df2565b50604080518082019091528151815260209182019181019190915290565b60606120f382612fed565b6120fc57600080fd5b600061210783613028565b90506000816001600160401b0381111561212357612123613ef5565b60405190808252806020026020018201604052801561215c57816020015b612149613df2565b8152602001906001900390816121415790505b509050600061216e85602001516130a4565b856020015161217d91906157a7565b90506000805b848110156121e6576121948361311f565b91506040518060400160405280838152602001848152508482815181106121bd576121bd615613565b60209081029190910101526121d282846157a7565b9250806121de816155a7565b915050612183565b509195945050505050565b600054610100900460ff166122185760405162461bcd60e51b815260040161041a9061575c565b61064b336115c4565b6060600061223661156c8561016001516120c2565b905060005b81518110156122bb57600061227061225e84848151811061158e5761158e615613565b6000815181106120ac576120ac615613565b9050846001600160a01b0316816001600160a01b0316036122aa576122a083838151811061158e5761158e615613565b93505050506115be565b506122b4816155a7565b905061223b565b506060949350505050565b91821c916000806122da600180861b615bcb565b909416949350505050565b60008060006122f784602001516130a4565b9050600081856020015161230b91906157a7565b9050600082866000015161231f9190615bcb565b9196919550909350505050565b60006115be8260a0015160086000600861234691906157a7565b6117179060106157a7565b612359613e57565b612361613e57565b6000808252604082018190526127106080830181905260a0830181905260c083019190915260e08201819052610100820152919050565b60408051600280825260608083018452926000929190602083019080368337505084519192505060ff16600119016124625760006123d5846131c3565b905060ff811661245c5783604001516002815181106123f6576123f6615613565b60200260200101518260008151811061241157612411615613565b602002602001018181525050836040015160038151811061243457612434615613565b60200260200101518260018151811061244f5761244f615613565b6020026020010181815250505b506115be565b825160ff16600219016115be57600061247a846131c3565b905060ff811661050057836040015160048151811061249b5761249b615613565b6020026020010151826000815181106124b6576124b6615613565b60200260200101818152505083604001516005815181106124d9576124d9615613565b6020026020010151826001815181106124f4576124f4615613565b6020026020010181815250505092915050565b6000612543604051806040016040528060198152602001782fb1b7b6b83aba32a1b630b4b6a0b6b7bab73a103132b3b4b760391b81525061151a565b600283015461ffff808216916201000081049091169060009042600160c81b90910463ffffffff161061282f5761257b826001615c02565b61ffff168361ffff160361259157508454612801565b60006002870154600160201b900460ff1660018111156125b3576125b3615680565b036125d3578261ffff1686600101546125cc9190615c33565b9050612801565b60006125df8385615c47565b87546125ef9161ffff1690615c33565b6125fa9060026157d3565b9050612632604051806040016040528060158152602001742fb1b7b6b83aba32a1b630b4b6a0b6b7bab73a101b60591b81525061151a565b6126726040518060400160405280601a8152602001791c9959141858dad95d10dbdc994b9c995b585a5b905b5bdd5b9d60321b81525088600001546131f6565b61269d6040518060400160405280600581526020016418dbdd5b9d60da1b8152508561ffff166131f6565b6126cd6040518060400160405280600a81526020016918db185a5b50dbdd5b9d60b21b8152508461ffff166131f6565b6127016040518060400160405280600e81526020016d31b630b4b6a0b6b7bab73a26b4b760911b81525087600001546131f6565b61270a5a61323b565b8554600090600161271b8688615c47565b6127259190615c47565b61ffff1661273391906157d3565b885461273f9190615bcb565b9050612766604051806040016040528060038152602001620dac2f60eb1b815250836131f6565b8082106127735780612775565b815b91506127ad604051806040016040528060158152602001745f636f6d70757465436c61696d416d6f756e74203760581b81525061151a565b5085548190036127c057855491506127ff565b60006127cb89613280565b87549091506127da9083615bcb565b6127e59060016157a7565b6127ef9082615c62565b87546127fb91906157a7565b9250505b505b61280c826001615c02565b8660020160026101000a81548161ffff021916908361ffff160217905550612833565b5084545b611fd06040518060400160405280601681526020017505f636f6d70757465436c61696d416d6f756e742031360541b81525061151a565b60c0810151600190156128855780612881816155a7565b9150505b8160e00151612710146128a0578061289c816155a7565b9150505b816101000151612710146128bc57806128b8816155a7565b9150505b610140820151511515806128d557506101608201515115155b806128e557506101a08201515115155b1561295757600082610160015151836101400151511161292a57826101a0015151836101600151511161291e57826101a0015151612932565b82610160015151612932565b826101400151515b905061293f8160046157d3565b61294990836157a7565b60ff90911661012084015290505b6129816040518060600160405280602e8152602001615e13602e913983610120015160ff166131f6565b806001600160401b0381111561299957612999613ef5565b6040519080825280602002602001820160405280156129c2578160200160208202803683370190505b50835281516129d29084906133d2565b6129e083836020015161342a565b6129ee83836060015161346b565b6129fc8383604001516134ba565b612a0b838361012001516134fe565b612a2c604051806060016040528060258152602001615e416025913961151a565b60008060019050836080015162ffffff1661271014612a6157612a5385856080015161358f565b612a5e600183615c02565b91505b8360a0015163ffffffff1661271014612a9057612a82858560a001516135f6565b612a8d600283615c02565b91505b60c084015115612ad65760c0840151855182612aab816155a7565b935081518110612abd57612abd615613565b6020908102919091010152612ad3600483615c02565b91505b8360e0015161271014612b1f5760e0840151855182612af4816155a7565b935081518110612b0657612b06615613565b6020908102919091010152612b1c600883615c02565b91505b83610100015161271014612b6a57610100840151855182612b3f816155a7565b935081518110612b5157612b51615613565b6020908102919091010152612b67601083615c02565b91505b61012084015160ff1615612e585760005b84610120015160ff16811015612e2657600085610140015151118015612ba657508461014001515181105b15612bfd578461014001518181518110612bc257612bc2615613565b602002602001015186600001518380612bda906155a7565b945081518110612bec57612bec615613565b602002602001018181525050612c2b565b855160009083612c0c816155a7565b945081518110612c1e57612c1e615613565b6020026020010181815250505b600085610160015151118015612c4657508461016001515181105b15612c9d578461016001518181518110612c6257612c62615613565b602002602001015186600001518380612c7a906155a7565b945081518110612c8c57612c8c615613565b602002602001018181525050612ccb565b855160009083612cac816155a7565b945081518110612cbe57612cbe615613565b6020026020010181815250505b600085610180015151118015612ce657508461018001515181105b15612d40578461018001518181518110612d0257612d02615613565b602002602001015160ff1686600001518380612d1d906155a7565b945081518110612d2f57612d2f615613565b602002602001018181525050612d6d565b8551819083612d4e816155a7565b945081518110612d6057612d60615613565b6020026020010181815250505b6000856101a0015151118015612d885750846101a001515181105b15612de857846101a001518181518110612da457612da4615613565b60200260200101516001600160a01b031686600001518380612dc5906155a7565b945081518110612dd757612dd7615613565b602002602001018181525050612e16565b855160009083612df7816155a7565b945081518110612e0957612e09615613565b6020026020010181815250505b612e1f816155a7565b9050612b7b565b50612e32602083615c02565b9150612e58604051806080016040528060448152602001615ece604491398651516131f6565b6104238583613669565b60606115be826136b9565b60606115be612e7b83613709565b6136b9565b6060612e8b82613843565b612e98608084901b613843565b60405161060f60f31b6020820152602281019290925260428201526062016040516020818303038152906040529050919050565b61137e8282604051602401612ee2929190615c76565b60408051601f198184030181529190526020810180516001600160e01b0316634b5c427760e01b1790526120b9565b6060612f406040518060400160405280600c81526020016b656e636f64654c697374203160a01b81525061151a565b6000612f4b836139ed565b9050612f7a6040518060400160405280600c81526020016b32b731b7b232a634b9ba101960a11b81525061151a565b611407612f89825160c0613b1d565b82613cd3565b60408051600560a21b8318601482015260348101909152606090611407816136b9565b8051600090601514612fc357600080fd5b6115be8261176f565b60006a636f6e736f6c652e6c6f679050600080835160208501845afa505050565b8051600090810361300057506000919050565b6020820151805160001a9060c082101561301e575060009392505050565b5060019392505050565b8051600090810361303b57506000919050565b60008061304b84602001516130a4565b846020015161305a91906157a7565b905060008460000151856020015161307291906157a7565b90505b80821015611253576130868261311f565b61309090836157a7565b91508261309c816155a7565b935050613075565b8051600090811a60808110156130bd5750600092915050565b60b88110806130d8575060c081108015906130d8575060f881105b156130e65750600192915050565b60c0811015613113576130fb600160b8615c9b565b6131089060ff1682615bcb565b6114079060016157a7565b6130fb600160f8615c9b565b80516000908190811a608081101561313a5760019150610500565b60b88110156131605761314e608082615bcb565b6131599060016157a7565b9150610500565b60c081101561318d5760b78103600185019450806020036101000a85510460018201810193505050610500565b60f88110156131a15761314e60c082615bcb565b60019390930151602084900360f7016101000a900490920160f5190192915050565b60006115be82604001516000815181106131df576131df615613565b6020026020010151600460ff16600060ff166122c6565b61137e828260405160240161320c929190615cb4565b60408051601f198184030181529190526020810180516001600160e01b0316632d839cb360e21b1790526120b9565b6106bf8160405160240161325191815260200190565b60408051601f198184030181529190526020810180516001600160e01b031663f82c50f160e01b1790526120b9565b600060656040518060400160405280600f81526020016e2930b73237b6a3b2b732b930ba37b960891b8152506040516132b991906155c0565b90815260405160209181900382019020546060840151918201516101008301516001600160a01b039092169263f41fdf5892906132f5906116de565b61330287606001516116fd565b6020880151606089015160c00151895160405160e089901b6001600160e01b03191681526101006004820152600261010482015261060f60f31b6101248201526001600160a01b03978816602482015263ffffffff968716604482015261ffff958616606482015294909316608485015290851660a48401529290921660c4820152911660e4820152610144016020604051808303816000875af11580156133ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115be9190615cd6565b61340782600001516000815181106133ec576133ec615613565b60200260200101518260ff16600860ff16600060ff16613d50565b8251805160009061341a5761341a615613565b6020026020010181815250505050565b613407826000015160008151811061344457613444615613565b60200260200101518260ff16600460ff166000600861346391906157ba565b60ff16613d50565b613407826000015160008151811061348557613485615613565b60200260200101518260ff16600460ff16600060086134a491906157ba565b6134af9060046157ba565b6134639060086157ba565b61340782600001516000815181106134d4576134d4615613565b60200260200101518260ff16600860ff16600060086134f391906157ba565b6134639060046157ba565b613407826000015160008151811061351857613518615613565b60200260200101518260ff16600860ff166000600861353791906157ba565b6135429060046157ba565b61354d9060086157ba565b6135589060046157ba565b6135639060106157ba565b61356e9060186157ba565b6135799060206157ba565b6135849060206157ba565b6134639060206157ba565b61340782600001516000815181106135a9576135a9615613565b60200260200101518262ffffff16601860ff16600060086135ca91906157ba565b6135d59060046157ba565b6135e09060086157ba565b6135eb9060046157ba565b6134639060106157ba565b613407826000015160008151811061361057613610615613565b60200260200101518263ffffffff16602060ff166000600861363291906157ba565b61363d9060046157ba565b6136489060086157ba565b6136539060046157ba565b61365e9060106157ba565b6134639060186157ba565b613407826000015160008151811061368357613683615613565b60200260200101518261ffff16601060ff16600060086136a391906157ba565b6136ae9060046157ba565b6134f39060086157ba565b606080825160011480156136e857506080836000815181106136dd576136dd615613565b016020015160f81c11155b156136f45750816115be565b61140761370384516080613b1d565b84613cd3565b6040805160208082528183019092526060916000919060208201818036833701905050905082602082015260005b602081101561377a5781818151811061375257613752615613565b01602001516001600160f81b03191660000361377a5780613772816155a7565b915050613737565b6000613787826020615bcb565b6001600160401b0381111561379e5761379e613ef5565b6040519080825280601f01601f1916602001820160405280156137c8576020820181803683370190505b50905060005b815181101561383a5783836137e2816155a7565b9450815181106137f4576137f4615613565b602001015160f81c60f81b82828151811061381157613811615613565b60200101906001600160f81b031916908160001a90535080613832816155a7565b9150506137ce565b50949350505050565b7aff00000000000000ff00000000000000ff00000000000000ff000063ffffffff60401b604083901c90811663ffffffff60c01b84161760201c63ffffffff60601b919091166001600160e01b031984161717601081901c91821678ff00000000000000ff00000000000000ff00000000000000ff60301b821617600890811c7bff00000000000000ff00000000000000ff00000000000000ff000000939093167fff00000000000000ff00000000000000ff00000000000000ff000000000000009290921691909117919091179081901c7e0f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f167f0f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f00600492831c161790613989827f06060606060606060606060606060606060606060606060606060606060606066157a7565b901c7f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f1660076139b991906157d3565b6139e3827f30303030303030303030303030303030303030303030303030303030303030306157a7565b6115be91906157a7565b60608151600003613a0e576040805160008082526020820190925290610500565b6000805b8351811015613a5557838181518110613a2d57613a2d615613565b60200260200101515182613a4191906157a7565b915080613a4d816155a7565b915050613a12565b6000826001600160401b03811115613a6f57613a6f613ef5565b6040519080825280601f01601f191660200182016040528015613a99576020820181803683370190505b50600092509050602081015b855183101561383a576000868481518110613ac257613ac2615613565b602002602001015190506000602082019050613ae083828451613d75565b878581518110613af257613af2615613565b60200260200101515183613b0691906157a7565b925050508280613b15906155a7565b935050613aa5565b6060806038841015613b875760408051600180825281830190925290602082018180368337019050509050613b5283856157a7565b601f1a60f81b81600081518110613b6b57613b6b615613565b60200101906001600160f81b031916908160001a905350611407565b600060015b613b968187615c33565b15613bbc5781613ba5816155a7565b9250613bb59050610100826157d3565b9050613b8c565b613bc78260016157a7565b6001600160401b03811115613bde57613bde613ef5565b6040519080825280601f01601f191660200182016040528015613c08576020820181803683370190505b509250613c1585836157a7565b613c209060376157a7565b601f1a60f81b83600081518110613c3957613c39615613565b60200101906001600160f81b031916908160001a905350600190505b818111613cca57610100613c698284615bcb565b613c7590610100615dd3565b613c7f9088615c33565b613c899190615c62565b601f1a60f81b838281518110613ca157613ca1615613565b60200101906001600160f81b031916908160001a90535080613cc2816155a7565b915050613c55565b50509392505050565b6060806040519050835180825260208201818101602087015b81831015613d04578051835260209283019201613cec565b50855184518101855292509050808201602086015b81831015613d31578051835260209283019201613d19565b508651929092011591909101601f01601f191660405250905092915050565b600083821b8183613d64600180881b615bcb565b901b19969096161795945050505050565b8282825b60208110613db15781518352613d906020846157a7565b9250613d9d6020836157a7565b9150613daa602082615bcb565b9050613d79565b8015613dea5760006001613dc6836020615bcb565b613dd290610100615dd3565b613ddc9190615bcb565b835185518216911916178452505b505050505050565b604051806040016040528060008152602001600081525090565b828054828255906000526020600020908101928215613e47579160200282015b82811115613e47578251825591602001919060010190613e2c565b50613e53929150613ee0565b5090565b604051806101c00160405280600060ff168152602001600060ff168152602001600060ff168152602001600060ff168152602001600062ffffff168152602001600063ffffffff168152602001600081526020016000815260200160008152602001600060ff168152602001606081526020016060815260200160608152602001606081525090565b5b80821115613e535760008155600101613ee1565b634e487b7160e01b600052604160045260246000fd5b60405161014081016001600160401b0381118282101715613f2e57613f2e613ef5565b60405290565b60405160a081016001600160401b0381118282101715613f2e57613f2e613ef5565b604080519081016001600160401b0381118282101715613f2e57613f2e613ef5565b604051608081016001600160401b0381118282101715613f2e57613f2e613ef5565b60405161018081016001600160401b0381118282101715613f2e57613f2e613ef5565b604051606081016001600160401b0381118282101715613f2e57613f2e613ef5565b60405161016081016001600160401b0381118282101715613f2e57613f2e613ef5565b604051601f8201601f191681016001600160401b038111828210171561402a5761402a613ef5565b604052919050565b6001600160a01b03811681146106bf57600080fd5b803561169e81614032565b803563ffffffff8116811461169e57600080fd5b60ff811681146106bf57600080fd5b803561169e81614066565b803561ffff8116811461169e57600080fd5b600061014082840312156140a557600080fd5b6140ad613f0b565b6140b683614047565b81526140c460208401614047565b60208201526140d560408401614047565b60408201526140e660608401614052565b60608201526140f760808401614052565b608082015261410860a08401614047565b60a082015261411960c08401614075565b60c082015261412a60e08401614080565b60e082015261010061413d818501614075565b9082015261012061414f848201614075565b908201529392505050565b60006001600160401b0382111561417357614173613ef5565b50601f01601f191660200190565b600082601f83011261419257600080fd5b81356141a56141a08261415a565b614002565b8181528460208386010111156141ba57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600080600080610100898b0312156141f457600080fd5b88356141ff81614032565b9750602089013561420f81614032565b9650604089013561421f81614032565b955061422d60608a01614052565b9450608089013561423d81614032565b935061424b60a08a01614052565b925060c08901356001600160401b0381111561426657600080fd5b6142728b828c01614181565b92505061428160e08a01614080565b90509295985092959890939650565b6020808252825182820182905280516040840181905260009291820190839060608601905b808310156142d557835182529284019260019290920191908401906142b5565b509695505050505050565b60005b838110156142fb5781810151838201526020016142e3565b50506000910152565b6000815180845261431c8160208601602086016142e0565b601f01601f19169290920160200192915050565b6020815260006114076020830184614304565b60008060008060008060c0878903121561435c57600080fd5b863561436781614032565b9550602087013561437781614032565b945061438560408801614052565b9350606087013561439581614032565b92506143a360808801614052565b91506143b160a08801614080565b90509295509295509295565b6020808252825182820181905260009190848201906040850190845b818110156143fe5783516001600160a01b0316835292840192918401916001016143d9565b50909695505050505050565b6000806000806080858703121561442057600080fd5b61442985614052565b935061443760208601614080565b9250604085013561444781614066565b915060608501356001600160401b0381111561446257600080fd5b61446e87828801614181565b91505092959194509250565b60006001600160401b0382111561449357614493613ef5565b5060051b60200190565b600060208083850312156144b057600080fd5b82356001600160401b03808211156144c757600080fd5b818501915085601f8301126144db57600080fd5b81356144e96141a08261447a565b81815260059190911b8301840190848101908883111561450857600080fd5b8585015b8381101561039c578035858111156145245760008081fd5b6145328b89838a0101614181565b84525091860191860161450c565b600080600080600060a0868803121561455857600080fd5b61456186614052565b945061456f60208701614080565b935061457d60408701614080565b9250606086013561458d81614066565b915060808601356001600160401b038111156145a857600080fd5b6145b488828901614181565b9150509295509295909350565b600082601f8301126145d257600080fd5b813560206145e26141a08361447a565b82815260059290921b8401810191818101908684111561460157600080fd5b8286015b848110156142d55780356001600160401b038082111561462457600080fd5b9088019060a0828b03601f1901121561463c57600080fd5b614644613f34565b8683013561465181614066565b815260408381013561466281614032565b828901526060848101358284015260808501359083015260a08401358381111561468c5760008081fd5b8085019450508b603f8501126146a457600092508283fd5b8784013592506146b66141a08461447a565b83815260069390931b8401810192888101908d8511156146d65760008081fd5b948201945b8486101561472d5782868f0312156146f35760008081fd5b6146fb613f56565b61470487614052565b81528a8701358060040b811461471a5760008081fd5b818c0152825294820194908901906146db565b6080840152505085525050918301918301614605565b60006080828403121561475557600080fd5b61475d613f78565b9050813561476a81614032565b8152602082013561477a81614066565b602082015260408201356001600160401b038082111561479957600080fd5b6147a585838601614181565b604084015260608401359150808211156147be57600080fd5b506147cb84828501614181565b60608301525092915050565b600080604083850312156147ea57600080fd5b82356001600160401b038082111561480157600080fd5b9084019060a0828703121561481557600080fd5b61481d613f34565b823561482881614032565b8152602083013561483881614032565b6020820152604083013561484b81614032565b604082015260608301358281111561486257600080fd5b8301610180818903121561487557600080fd5b61487d613f9a565b61488682614047565b815261489460208301614047565b60208201526148a560408301614047565b60408201526148b660608301614047565b60608201526080820135608082015260a082013560a08201526148db60c08301614052565b60c08201526148ec60e08301614052565b60e08201526101006148ff818401614052565b90820152610120614911838201614075565b90820152610140828101358581111561492957600080fd5b6149358b8286016145c1565b828401525050610160808301358581111561494f57600080fd5b61495b8b828601614181565b828401525050806060840152505061497560808401614075565b60808201529350602085013591508082111561499057600080fd5b5061499d85828601614743565b9150509250929050565b6020815260018060a01b03825116602082015260ff602083015116604082015260006040830151608060608401526149e260a0840182614304565b90506060840151601f198483030160808501526149ff8282614304565b95945050505050565b600082601f830112614a1957600080fd5b81356020614a296141a08361447a565b82815260059290921b84018101918181019086841115614a4857600080fd5b8286015b848110156142d55780358352918301918301614a4c565b600082601f830112614a7457600080fd5b81356020614a846141a08361447a565b82815260059290921b84018101918181019086841115614aa357600080fd5b8286015b848110156142d5578035614aba81614032565b8352918301918301614aa7565b600082601f830112614ad857600080fd5b81356020614ae86141a08361447a565b82815260059290921b84018101918181019086841115614b0757600080fd5b8286015b848110156142d55780356001600160401b0380821115614b2a57600080fd5b90880190601f196080838c0382011215614b4357600080fd5b614b4b613f78565b8784013583811115614b5c57600080fd5b84016060818e0384011215614b7057600080fd5b614b78613fbd565b925088810135614b8781614066565b8352604081810135614b9881614032565b848b0152606082013585811115614bae57600080fd5b614bbc8f8c83860101614a08565b8286015250838352614bcf818701614075565b8a8401526060860135935084841115614be757600080fd5b614bf58e8b86890101614a63565b90830152506080840135915082821115614c0e57600080fd5b614c1c8c8984870101614a08565b60608201528652505050918301918301614b0b565b600082601f830112614c4257600080fd5b81356020614c526141a08361447a565b82815260059290921b84018101918181019086841115614c7157600080fd5b8286015b848110156142d55780356001600160401b03811115614c945760008081fd5b614ca28986838b0101614181565b845250918301918301614c75565b600082601f830112614cc157600080fd5b81356020614cd16141a08361447a565b82815260059290921b84018101918181019086841115614cf057600080fd5b8286015b848110156142d55780356001600160401b0380821115614d145760008081fd5b9088019060a0828b03601f1901811315614d2e5760008081fd5b614d36613f34565b8784013583811115614d485760008081fd5b614d568d8a83880101614ac7565b8252506040614d66818601614075565b898301526060614d77818701614047565b82840152608091508186013585811115614d915760008081fd5b614d9f8f8c838a0101614a63565b82850152505082850135925083831115614db95760008081fd5b614dc78d8a85880101614c31565b908201528652505050918301918301614cf4565b600082601f830112614dec57600080fd5b81356020614dfc6141a08361447a565b82815260059290921b84018101918181019086841115614e1b57600080fd5b8286015b848110156142d5578035614e3281614066565b8352918301918301614e1f565b80356001600160401b038116811461169e57600080fd5b600082601f830112614e6757600080fd5b81356020614e776141a08361447a565b82815260059290921b84018101918181019086841115614e9657600080fd5b8286015b848110156142d55780356001600160401b0380821115614eba5760008081fd5b90880190610160828b03601f1901811315614ed55760008081fd5b614edd613fdf565b614ee8888501614080565b81526040614ef7818601614080565b898301526060614f08818701614075565b8284015260809150614f1b828701614052565b9083015260a0614f2c868201614075565b8284015260c09150614f3f828701614052565b9083015260e0614f50868201614052565b828401526101009150614f64828701614e3f565b908301526101208581013585811115614f7d5760008081fd5b614f8b8f8c838a0101614a63565b838501525061014091508186013585811115614fa75760008081fd5b614fb58f8c838a0101614c31565b828501525050614fc6838601614047565b908201528652505050918301918301614e9a565b600082601f830112614feb57600080fd5b81356020614ffb6141a08361447a565b82815260059290921b8401810191818101908684111561501a57600080fd5b8286015b848110156142d55780356001600160401b038082111561503e5760008081fd5b9088019060a0828b03601f19018113156150585760008081fd5b615060613f34565b61506b888501614052565b8152604080850135848111156150815760008081fd5b61508f8e8b83890101614181565b8a84015250606080860135858111156150a85760008081fd5b6150b68f8c838a0101614181565b83850152506080915081860135858111156150d15760008081fd5b6150df8f8c838a0101614181565b8285015250506150f0838601614075565b90820152865250505091830191830161501e565b6000806040838503121561511757600080fd5b61512083614052565b915060208301356001600160401b038082111561513c57600080fd5b90840190610160828703121561515157600080fd5b615159613fdf565b82358281111561516857600080fd5b61517488828601614cb0565b82525060208301358281111561518957600080fd5b61519588828601614ddb565b6020830152506040830135828111156151ad57600080fd5b6151b988828601614e56565b6040830152506060830135828111156151d157600080fd5b6151dd88828601614fda565b6060830152506080830135828111156151f557600080fd5b61520188828601614ddb565b60808301525060a08301358281111561521957600080fd5b61522588828601614a63565b60a08301525060c08301358281111561523d57600080fd5b61524988828601614a63565b60c08301525061525b60e08401614052565b60e082015261010061526e818501614052565b90820152610120615280848201614075565b90820152610140838101358381111561529857600080fd5b6152a489828701614181565b8284015250508093505050509250929050565b6000602082840312156152c957600080fd5b81356001600160401b03808211156152e057600080fd5b9083019061016082860312156152f557600080fd5b6152fd613fdf565b61530683614047565b815261531460208401614047565b602082015261532560408401614052565b604082015261533660608401614080565b606082015261534760808401614080565b608082015261535860a08401614075565b60a082015261536960c08401614047565b60c082015261537a60e08401614052565b60e082015261010061538d818501614047565b9082015261012061539f848201614075565b9082015261014083810135838111156153b757600080fd5b6153c388828701614181565b918301919091525095945050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561542957603f19888603018452615417858351614304565b945092850192908501906001016153fb565b5092979650505050505050565b60006020828403121561544857600080fd5b81356001600160401b0381111561545e57600080fd5b6115ba84828501614a63565b60008060006060848603121561547f57600080fd5b61548884614052565b925061549660208501614080565b915060408401356154a681614066565b809150509250925092565b6000602082840312156154c357600080fd5b813561140781614032565b600081518084526020808501945080840160005b8381101561550157815160ff16875295820195908201906001016154e2565b509495945050505050565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b8381101561558357888303603f1901855281518051878552615557888601826154ce565b91890151858303868b015291905061556f81836154ce565b968901969450505090860190600101615533565b509098975050505050505050565b634e487b7160e01b600052601160045260246000fd5b6000600182016155b9576155b9615591565b5060010190565b600082516155d28184602087016142e0565b9190910192915050565b6020808252601d908201527f73656e646572206e6f74206d6174636820617265612061646472657373000000604082015260600190565b634e487b7160e01b600052603260045260246000fd5b63ffffffff93909316835261ffff918216602084015216604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052602160045260246000fd5b60006156a46141a08461415a565b90508281528383830111156156b857600080fd5b6114078360208301846142e0565b6000602082840312156156d857600080fd5b81516001600160401b038111156156ee57600080fd5b8201601f810184136156ff57600080fd5b6115ba84825160208401615696565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b808201808211156115be576115be615591565b60ff81811683821601908111156115be576115be615591565b80820281158282048414176115be576115be615591565b805161169e81614032565b60006020828403121561580757600080fd5b815161140781614032565b805161169e81614066565b600082601f83011261582e57600080fd5b8151602061583e6141a08361447a565b82815260059290921b8401810191818101908684111561585d57600080fd5b8286015b848110156142d55780518352918301918301615861565b600082601f83011261588957600080fd5b815160206158996141a08361447a565b82815260059290921b840181019181810190868411156158b857600080fd5b8286015b848110156142d55780516158cf81614032565b83529183019183016158bc565b600082601f8301126158ed57600080fd5b815160206158fd6141a08361447a565b82815260059290921b8401810191818101908684111561591c57600080fd5b8286015b848110156142d55780516001600160401b038082111561593f57600080fd5b90880190601f196080838c038201121561595857600080fd5b615960613f78565b878401518381111561597157600080fd5b84016060818e038401121561598557600080fd5b61598d613fbd565b92508881015161599c81614066565b83526040818101516159ad81614032565b848b01526060820151858111156159c357600080fd5b6159d18f8c8386010161581d565b82860152508383526159e4818701615812565b8a84015260608601519350848411156159fc57600080fd5b615a0a8e8b86890101615878565b90830152506080840151915082821115615a2357600080fd5b615a318c898487010161581d565b60608201528652505050918301918301615920565b600082601f830112615a5757600080fd5b81516020615a676141a08361447a565b82815260059290921b84018101918181019086841115615a8657600080fd5b8286015b848110156142d55780516001600160401b03811115615aa95760008081fd5b8701603f81018913615abb5760008081fd5b615acc898683015160408401615696565b845250918301918301615a8a565b60008060408385031215615aed57600080fd5b82518015158114615afd57600080fd5b60208401519092506001600160401b0380821115615b1a57600080fd5b9084019060a08287031215615b2e57600080fd5b615b36613f34565b825182811115615b4557600080fd5b615b51888286016158dc565b825250615b6060208401615812565b6020820152615b71604084016157ea565b6040820152606083015182811115615b8857600080fd5b615b9488828601615878565b606083015250608083015182811115615bac57600080fd5b615bb888828601615a46565b6080830152508093505050509250929050565b818103818111156115be576115be615591565b805160208083015191908110156113f15760001960209190910360031b1b16919050565b61ffff81811683821601908082111561050057610500615591565b634e487b7160e01b600052601260045260246000fd5b600082615c4257615c42615c1d565b500490565b61ffff82811682821603908082111561050057610500615591565b600082615c7157615c71615c1d565b500690565b604081526000615c896040830185614304565b82810360208401526149ff8185614304565b60ff82811682821603908111156115be576115be615591565b604081526000615cc76040830185614304565b90508260208301529392505050565b600060208284031215615ce857600080fd5b5051919050565b600181815b80851115615d2a578160001904821115615d1057615d10615591565b80851615615d1d57918102915b93841c9390800290615cf4565b509250929050565b600082615d41575060016115be565b81615d4e575060006115be565b8160018114615d645760028114615d6e57615d8a565b60019150506115be565b60ff841115615d7f57615d7f615591565b50506001821b6115be565b5060208310610133831016604e8410600b8410161715615dad575081810a6115be565b615db78383615cef565b8060001904821115615dcb57615dcb615591565b029392505050565b60006114078383615d3256fe2d2d2d2d2d2d2d2d2d2d2d2d2d2d7265647061636b65742070726f6365737320626567696e20202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d20746f6b656e48616e646c657220736574506172616d7320746f6b656e436f756e742d2d2d2d2d2d2d2d2d2d2d2d20746f6b656e48616e646c657220736574506172616d7320312d2d2d2d2d2d2d2d2d2d2d2d2d2d7265647061636b65742070726f6365737320626567696e2036202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d7265647061636b65742070726f6365737320626567696e2035202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d20746f6b656e48616e646c657220736574506172616d7320746f6b656e436f756e742073656c662e76616c75654c6973742e6c656e677468a2646970667358221220482ea21ae2ce58670dc214665f667b6ca304fac84a74e64f25a486869f6f99b464736f6c63430008110033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061010c5760003560e01c80638129fc1c1161009d5780638129fc1c146101e95780638da5cb5b146101f157806395edcb0814610211578063a903620c14610231578063af84b51f14610244578063b41bd78914610264578063b4b7035214610277578063d0d35b551461028a578063f2fde38b1461029d578063f2fe4fa5146102b057600080fd5b80631cc4f041146101115780631eda6e4f1461013a57806334c76b251461015a5780634b2dbcb8146101775780634b2e9b411461017757806354fd4d50146101975780635790c294146101a657806362329cc5146101bb5780636dabaf04146101ce578063715018a6146101e1575b600080fd5b61012561011f366004614092565b50600090565b60405190151581526020015b60405180910390f35b61014d6101483660046141d7565b6102bf565b6040516101319190614290565b6040805160208101909152600081525b6040516101319190614330565b61018a610185366004614343565b610378565b60405161013191906143bd565b60405160008152602001610131565b6101b96101b436600461440a565b6103a9565b005b61018a6101c936600461449d565b61042a565b6101256101dc366004614540565b610507565b6101b9610612565b6101b961064d565b6101f96106c2565b6040516001600160a01b039091168152602001610131565b61022461021f3660046147d7565b6106d1565b60405161013191906149a7565b6101b961023f366004615104565b610d6c565b6102576102523660046152b7565b610de9565b60405161013191906153d4565b6101b9610272366004615436565b61125c565b610125610285366004614092565b611382565b61016a61029836600461546a565b6113f7565b6101b96102ab3660046154b1565b61140e565b6060604051610131919061550c565b60408051602081019091526060815260006102e08a898989898e60006114ab565b60008181526069602090815260408083208151815480850282018401845293810184815295965093949092849284919084018282801561033f57602002820191906000526020600020905b81548152602001906001019080831161032b575b505050505081525050905060005b8151518110156103695780610361816155a7565b91505061034d565b509a9950505050505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505b5098975050505050505050565b6040518060400160405280600f81526020016e436c757374657252756c654172656160881b8152506065816040516103e191906155c0565b90815260405190819003602001902054336001600160a01b03909116146104235760405162461bcd60e51b815260040161041a906155dc565b60405180910390fd5b5050505050565b6060600082516001600160401b0381111561044757610447613ef5565b604051908082528060200260200182016040528015610470578160200160208202803683370190505b50905060005b815181101561050057606584828151811061049357610493615613565b60200260200101516040516104a891906155c0565b9081526040519081900360200190205482516001600160a01b03909116908390839081106104d8576104d8615613565b6001600160a01b03909216602092830291909101909101526104f9816155a7565b9050610476565b5092915050565b60006040518060400160405280601681526020017521b63ab9ba32b9293ab632a0b932b0a430b7323632b960511b81525060658160405161054891906155c0565b90815260405190819003602001902054336001600160a01b03909116146105815760405162461bcd60e51b815260040161041a906155dc565b600087878760405160200161059893929190615629565b6040516020818303038152906040528051906020012090506105e16040518060400160405280601081526020016f3ab83230ba32a0b933b9903132b3b4b760811b81525061151a565b6105ec84600061155d565b6000918252606a602052604090912063ffffffff90911690555060019695505050505050565b3361061b6106c2565b6001600160a01b0316146106415760405162461bcd60e51b815260040161041a9061564b565b61064b60006115c4565b565b60006106596001611616565b90508015610671576000805461ff0019166101001790555b6106796116a3565b80156106bf576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b6033546001600160a01b031690565b604080516080810182526000808252602082015260609181018290528181019190915260405180604001604052806006815260200165456e67696e6560d01b81525060658160405161072391906155c0565b90815260405190819003602001902054336001600160a01b039091161461075c5760405162461bcd60e51b815260040161041a906155dc565b61077d604051806060016040528060338152602001615de06033913961151a565b3083526060840151600090610791906116d2565b90506000856060015161010001516107ac87606001516116de565b6107b988606001516116fd565b6040516020016107cb93929190615629565b60405160208183030381529060405280519060200120905060006108076108028460008a606001516117229092919063ffffffff16565b61176f565b9050600061085e338960600151602001518a6060015161010001518b602001518c6060015160e0015163ffffffff1660001461084b578c6060015160e00151610855565b8c6060015160c001515b8d5160006114ab565b90506000886060015160e0015163ffffffff1660001461088657886060015160e00151610890565b886060015160c001515b63ffffffff169050600084826040516020016108b6929190918252602082015260400190565b60408051601f19818403018152828252805160209182012060008181526068835283902060608501909352603480855290945091926108fd929091615e9a9083013961151a565b6109078b866117bd565b60ff851661099f5761091b818c8989611917565b8a600001516001600160a01b031683877fece4b98fc3ff2d0ab248e9abc8900f5a7a83215c66dec56e9550328c2188480a8e60600151610140015160008151811061096857610968615613565b6020026020010151606001514260405161099292919091825263ffffffff16602082015260400190565b60405180910390a4610d43565b60001960ff861601610bc457600281015442600160c81b90910463ffffffff161015610a045760405162461bcd60e51b815260206004820152601460248201527319195859131a5b99481a185cc81c995858da195960621b604482015260640161041a565b600281015461ffff808216620100009092041610610a5a5760405162461bcd60e51b81526020600482015260136024820152723932b23830b1b5b2ba103737903932b6b0b4b760691b604482015260640161041a565b60008381526067602090815260408083208e516001600160a01b0316845290915290205460ff1615610ac35760405162461bcd60e51b815260206004820152601260248201527118d85b1b195c881a185cc818db185a5b595960721b604482015260640161041a565b610ae4604051806060016040528060348152602001615e666034913961151a565b60008381526067602090815260408083208e516001600160a01b031684528252808320805460ff19166001179055888352606a9091528120610b2b908d9087908590611b01565b905080606b600085815260200190815260200160002060008e600001516001600160a01b03166001600160a01b03168152602001908152602001600020819055508b600001516001600160a01b031684887f755409bca7e30aa7197cb560a85ba309a9bdb24df068a6bd2f18e1d6357940cb8442604051610bb6929190918252602082015260400190565b60405180910390a450610d43565b60011960ff861601610d4357600281015442600160c81b90910463ffffffff1610610c2c5760405162461bcd60e51b815260206004820152601860248201527719195859131a5b99481a185cc81b9bdd081c995858da195960421b604482015260640161041a565b8a516002820154600160281b90046001600160a01b03908116911614610c8c5760405162461bcd60e51b815260206004820152601560248201527431b0b63632b91034b9903737ba1031b932b0ba37b960591b604482015260640161041a565b8054610cd05760405162461bcd60e51b81526020600482015260136024820152723932b22830b1b5b2ba103737903932b6b0b4b760691b604482015260640161041a565b6000868152606a60205260408120610ced908d9087908590611b01565b90508b600001516001600160a01b031684887f84743c18cae5a560978ede1345e808b7ceb1ebb2f4ae55fbdfba0ead3817556e8442604051610d39929190918252602082015260400190565b60405180910390a4505b60ff8516610d5657610d568b8587611e51565b5050606460208901525095979650505050505050565b6040518060400160405280601681526020017521b63ab9ba32b9293ab632a0b932b0a430b7323632b960511b815250606581604051610dab91906155c0565b90815260405190819003602001902054336001600160a01b0390911614610de45760405162461bcd60e51b815260040161041a906155dc565b505050565b6060806000610dfe846101400151600061155d565b90506000846040015185606001518660800151604051602001610e2393929190615629565b60408051601f198184030181528282528051602091820120818401528282018590528151808403830181526060909301909152815191012061012086015190915060ff166000190161119157600081815260686020526040908190208151600880825261012082019093529091816020015b6060815260200190600190039081610e9557505060408051808201909152600c81526b1c995b585a5b905b5bdd5b9d60a21b60208201528254919550610eda91611eba565b84600081518110610eed57610eed615613565b6020026020010181905250610f296040518060400160405280600b81526020016a1d1bdd185b105b5bdd5b9d60aa1b8152508260010154611eba565b84600181518110610f3c57610f3c615613565b6020026020010181905250610f846040518060400160405280600581526020016418dbdd5b9d60da1b8152508260020160009054906101000a900461ffff1661ffff16611eba565b84600281518110610f9757610f97615613565b6020026020010181905250610fe46040518060400160405280600a81526020016918db185a5b50dbdd5b9d60b21b8152508260020160029054906101000a900461ffff1661ffff16611eba565b84600381518110610ff757610ff7615613565b602002602001018190525061104a604051806040016040528060048152602001636d6f646560e01b8152508260020160049054906101000a900460ff16600181111561104557611045615680565b611eba565b8460048151811061105d5761105d615613565b60200260200101819052506110a86040518060400160405280600781526020016631b932b0ba37b960c91b8152508260020160059054906101000a90046001600160a01b0316611fda565b846005815181106110bb576110bb615613565b602002602001018190525061110a60405180604001604052806008815260200167646561644c696e6560c01b8152508260020160199054906101000a900463ffffffff1663ffffffff16611eba565b8460068151811061111d5761111d615613565b602002602001018190525061116d60405180604001604052806009815260200168737461727454696d6560b81b8152508260030160009054906101000a900463ffffffff1663ffffffff16611eba565b8460078151811061118057611180615613565b602002602001018190525050611253565b600260ff1685610120015160ff16036112535760408051600180825281830190925290816020015b60608152602001906001900390816111b957905050925060006111e2866101400151600161206e565b604080518082018252600b81526a18db185a5b505b5bdd5b9d60aa1b6020808301919091526000868152606b82528381206001600160a01b0386168252909152919091205491925061123391611eba565b8460008151811061124657611246615613565b6020026020010181905250505b50909392505050565b336112656106c2565b6001600160a01b03161461128b5760405162461bcd60e51b815260040161041a9061564b565b60005b815181101561137e578181815181106112a9576112a9615613565b602002602001015160658383815181106112c5576112c5615613565b60200260200101516001600160a01b03166334c76b256040518163ffffffff1660e01b8152600401600060405180830381865afa15801561130a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261133291908101906156c6565b60405161133f91906155c0565b90815260405190819003602001902080546001600160a01b03929092166001600160a01b0319909216919091179055611377816155a7565b905061128e565b5050565b600060405180604001604052806006815260200165456e67696e6560d01b8152506065816040516113b391906155c0565b90815260405190819003602001902054336001600160a01b03909116146113ec5760405162461bcd60e51b815260040161041a906155dc565b600091505b50919050565b6040805160208101909152600081525b9392505050565b336114176106c2565b6001600160a01b03161461143d5760405162461bcd60e51b815260040161041a9061564b565b6001600160a01b0381166114a25760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161041a565b6106bf816115c4565b604080516001600160a01b039889166020808301919091529789168183015263ffffffff968716606082015294881660808601529290941660a084015290941660c082015261ffff90911660e08083019190915283518083039091018152610100909101909252815191012090565b6106bf8160405160240161152e9190614330565b60408051601f198184030181529190526020810180516001600160e01b031663104c13eb60e21b1790526120b9565b60008061157161156c856120c2565b6120e8565b90506115ba61159b828560ff168151811061158e5761158e615613565b60200260200101516120e8565b6002815181106115ad576115ad615613565b602002602001015161176f565b9150505b92915050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60008054610100900460ff161561165d578160ff1660011480156116395750303b155b6116555760405162461bcd60e51b815260040161041a9061570e565b506000919050565b60005460ff8084169116106116845760405162461bcd60e51b815260040161041a9061570e565b506000805460ff191660ff92909216919091179055600190565b919050565b600054610100900460ff166116ca5760405162461bcd60e51b815260040161041a9061575c565b61064b6121f1565b60606115be8230612221565b60006115be8260a001516010600060086116f891906157a7565b6122c6565b60006115be8260a0015160106000600861171791906157a7565b6116f89060106157a7565b61172a613df2565b61174c836117398460016157ba565b60ff168151811061158e5761158e615613565b60028151811061175e5761175e615613565b602002602001015190509392505050565b80516000901580159061178457508151602110155b61178d57600080fd5b600080611799846122e5565b8151919350915060208210156117b55760208290036101000a90045b949350505050565b60ff811615806117d0575060ff81166001145b806117de575060ff81166002145b1561137e5760006117f2836060015161232c565b905060ff821661184f5760ff811660011461184f5760405162461bcd60e51b815260206004820152601f60248201527f434d445f5245445f5041434b45545f4e4557206272616e6368206572726f7200604482015260640161041a565b60001960ff8316016118ae5760ff81166002146118ae5760405162461bcd60e51b815260206004820181905260248201527f434d445f5245445f5041434b45545f4f50454e206272616e6368206572726f72604482015260640161041a565b60011960ff831601610de45760ff8116600314610de45760405162461bcd60e51b815260206004820152602160248201527f434d445f5245445f5041434b45545f434c41494d5f52454d41494e206572726f6044820152603960f91b606482015260840161041a565b606083015161192c9061080290846001611722565b60028501805461ffff191661ffff9290921691909117905560608301516101400151805160009061195f5761195f615613565b60200260200101516060015184600001819055508260600151610140015160008151811061198f5761198f615613565b60200260200101516060015184600101819055506119c061080283600286606001516117229092919063ffffffff16565b6119ca90426157a7565b60028501805463ffffffff60c81b1916600160c81b63ffffffff938416021790556003808601805463ffffffff19164284161790556060850151611a149261080292869161172216565b60ff166001811115611a2857611a28615680565b60028501805464ff000000001916600160201b836001811115611a4d57611a4d615680565b021790555082516002850180546001600160a01b03909216600160281b02600160281b600160c81b0319831681179091556000838152606a60205260408120549092611aa19261ffff9081169116176157d3565b905084600101548111156104235760405162461bcd60e51b815260206004820152602160248201527f616d6f756e74206e6f7420656e6f75676820666f72207375636820636f6e66696044820152606760f81b606482015260840161041a565b600080611b0c612351565b9050611b246040518060200160405280606081525090565b60016060830152606560408301526002850154600160c81b900463ffffffff164211611b51576002611b54565b60035b60ff16825260408051600180825281830190925290602080830190803683375050506101408301526040805160018082528183019092529060208083019080368337505050610160830152600161012083015260608701516020908101516040805163050938c360e21b815290516000936001600160a01b0390931692631424e30c92600480820193918290030181865afa158015611bf7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c1b91906157f5565b6001600160a01b0316632c34025e89606001516101000151611c408b606001516116fd565b6040516001600160e01b031960e085901b16815263ffffffff92909216600483015261ffff16602482015260656044820152606401600060405180830381865afa158015611c92573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611cba9190810190615ada565b915050600360ff168160000151600081518110611cd957611cd9615613565b6020026020010151600001516000015160ff1603611d61576000611d1e8260000151600081518110611d0d57611d0d615613565b602002602001015160000151612398565b905080600081518110611d3357611d33615613565b6020026020010151846101400151600081518110611d5357611d53615613565b602002602001018181525050505b611d916040518060400160405280600f81526020016e5f70726f63657373436c61696d203160881b81525061151a565b611d9c888787612507565b836101600151600081518110611db457611db4615613565b602002602001018181525050826101600151600081518110611dd857611dd8615613565b60200260200101518660000154611def9190615bcb565b8655611dfb828461286a565b6000878152606960209081526040909120835180518593611e20928492910190613e0c565b50905050826101600151600081518110611e3c57611e3c615613565b60200260200101519350505050949350505050565b6000611e5b612351565b9050611e736040518060200160405280606081525090565b6064604083015260016020830152611e8b818361286a565b6000848152606960209081526040909120825180518493611eb0928492910190613e0c565b5050505050505050565b60606000611ec784612e62565b90506000611ed484612e6d565b9050611f176040518060400160405280600e81526020016d0b4b4b4b4b4b4b481d1bd55a5b9d60921b815250611f1283611f0d90615bde565b612e80565b612ecc565b60408051600380825260808201909252600091816020015b6060815260200190600190039081611f2f5790505090508281600081518110611f5a57611f5a615613565b6020026020010181905250611f8a604051806040016040528060048152602001631d5a5b9d60e21b815250612e62565b81600181518110611f9d57611f9d615613565b60200260200101819052508181600281518110611fbc57611fbc615613565b6020026020010181905250611fd081612f11565b9695505050505050565b60606000611fe784612e62565b90506000611ff484612f8f565b6040805160038082526080820190925291925060009190816020015b6060815260200190600190039081612010579050509050828160008151811061203b5761203b615613565b6020026020010181905250611f8a604051806040016040528060078152602001666164647265737360c81b815250612e62565b60008061207d61156c856120c2565b90506115ba61209a828560ff168151811061158e5761158e615613565b6002815181106120ac576120ac615613565b6020026020010151612fb2565b6106bf81612fcc565b6120ca613df2565b50604080518082019091528151815260209182019181019190915290565b60606120f382612fed565b6120fc57600080fd5b600061210783613028565b90506000816001600160401b0381111561212357612123613ef5565b60405190808252806020026020018201604052801561215c57816020015b612149613df2565b8152602001906001900390816121415790505b509050600061216e85602001516130a4565b856020015161217d91906157a7565b90506000805b848110156121e6576121948361311f565b91506040518060400160405280838152602001848152508482815181106121bd576121bd615613565b60209081029190910101526121d282846157a7565b9250806121de816155a7565b915050612183565b509195945050505050565b600054610100900460ff166122185760405162461bcd60e51b815260040161041a9061575c565b61064b336115c4565b6060600061223661156c8561016001516120c2565b905060005b81518110156122bb57600061227061225e84848151811061158e5761158e615613565b6000815181106120ac576120ac615613565b9050846001600160a01b0316816001600160a01b0316036122aa576122a083838151811061158e5761158e615613565b93505050506115be565b506122b4816155a7565b905061223b565b506060949350505050565b91821c916000806122da600180861b615bcb565b909416949350505050565b60008060006122f784602001516130a4565b9050600081856020015161230b91906157a7565b9050600082866000015161231f9190615bcb565b9196919550909350505050565b60006115be8260a0015160086000600861234691906157a7565b6117179060106157a7565b612359613e57565b612361613e57565b6000808252604082018190526127106080830181905260a0830181905260c083019190915260e08201819052610100820152919050565b60408051600280825260608083018452926000929190602083019080368337505084519192505060ff16600119016124625760006123d5846131c3565b905060ff811661245c5783604001516002815181106123f6576123f6615613565b60200260200101518260008151811061241157612411615613565b602002602001018181525050836040015160038151811061243457612434615613565b60200260200101518260018151811061244f5761244f615613565b6020026020010181815250505b506115be565b825160ff16600219016115be57600061247a846131c3565b905060ff811661050057836040015160048151811061249b5761249b615613565b6020026020010151826000815181106124b6576124b6615613565b60200260200101818152505083604001516005815181106124d9576124d9615613565b6020026020010151826001815181106124f4576124f4615613565b6020026020010181815250505092915050565b6000612543604051806040016040528060198152602001782fb1b7b6b83aba32a1b630b4b6a0b6b7bab73a103132b3b4b760391b81525061151a565b600283015461ffff808216916201000081049091169060009042600160c81b90910463ffffffff161061282f5761257b826001615c02565b61ffff168361ffff160361259157508454612801565b60006002870154600160201b900460ff1660018111156125b3576125b3615680565b036125d3578261ffff1686600101546125cc9190615c33565b9050612801565b60006125df8385615c47565b87546125ef9161ffff1690615c33565b6125fa9060026157d3565b9050612632604051806040016040528060158152602001742fb1b7b6b83aba32a1b630b4b6a0b6b7bab73a101b60591b81525061151a565b6126726040518060400160405280601a8152602001791c9959141858dad95d10dbdc994b9c995b585a5b905b5bdd5b9d60321b81525088600001546131f6565b61269d6040518060400160405280600581526020016418dbdd5b9d60da1b8152508561ffff166131f6565b6126cd6040518060400160405280600a81526020016918db185a5b50dbdd5b9d60b21b8152508461ffff166131f6565b6127016040518060400160405280600e81526020016d31b630b4b6a0b6b7bab73a26b4b760911b81525087600001546131f6565b61270a5a61323b565b8554600090600161271b8688615c47565b6127259190615c47565b61ffff1661273391906157d3565b885461273f9190615bcb565b9050612766604051806040016040528060038152602001620dac2f60eb1b815250836131f6565b8082106127735780612775565b815b91506127ad604051806040016040528060158152602001745f636f6d70757465436c61696d416d6f756e74203760581b81525061151a565b5085548190036127c057855491506127ff565b60006127cb89613280565b87549091506127da9083615bcb565b6127e59060016157a7565b6127ef9082615c62565b87546127fb91906157a7565b9250505b505b61280c826001615c02565b8660020160026101000a81548161ffff021916908361ffff160217905550612833565b5084545b611fd06040518060400160405280601681526020017505f636f6d70757465436c61696d416d6f756e742031360541b81525061151a565b60c0810151600190156128855780612881816155a7565b9150505b8160e00151612710146128a0578061289c816155a7565b9150505b816101000151612710146128bc57806128b8816155a7565b9150505b610140820151511515806128d557506101608201515115155b806128e557506101a08201515115155b1561295757600082610160015151836101400151511161292a57826101a0015151836101600151511161291e57826101a0015151612932565b82610160015151612932565b826101400151515b905061293f8160046157d3565b61294990836157a7565b60ff90911661012084015290505b6129816040518060600160405280602e8152602001615e13602e913983610120015160ff166131f6565b806001600160401b0381111561299957612999613ef5565b6040519080825280602002602001820160405280156129c2578160200160208202803683370190505b50835281516129d29084906133d2565b6129e083836020015161342a565b6129ee83836060015161346b565b6129fc8383604001516134ba565b612a0b838361012001516134fe565b612a2c604051806060016040528060258152602001615e416025913961151a565b60008060019050836080015162ffffff1661271014612a6157612a5385856080015161358f565b612a5e600183615c02565b91505b8360a0015163ffffffff1661271014612a9057612a82858560a001516135f6565b612a8d600283615c02565b91505b60c084015115612ad65760c0840151855182612aab816155a7565b935081518110612abd57612abd615613565b6020908102919091010152612ad3600483615c02565b91505b8360e0015161271014612b1f5760e0840151855182612af4816155a7565b935081518110612b0657612b06615613565b6020908102919091010152612b1c600883615c02565b91505b83610100015161271014612b6a57610100840151855182612b3f816155a7565b935081518110612b5157612b51615613565b6020908102919091010152612b67601083615c02565b91505b61012084015160ff1615612e585760005b84610120015160ff16811015612e2657600085610140015151118015612ba657508461014001515181105b15612bfd578461014001518181518110612bc257612bc2615613565b602002602001015186600001518380612bda906155a7565b945081518110612bec57612bec615613565b602002602001018181525050612c2b565b855160009083612c0c816155a7565b945081518110612c1e57612c1e615613565b6020026020010181815250505b600085610160015151118015612c4657508461016001515181105b15612c9d578461016001518181518110612c6257612c62615613565b602002602001015186600001518380612c7a906155a7565b945081518110612c8c57612c8c615613565b602002602001018181525050612ccb565b855160009083612cac816155a7565b945081518110612cbe57612cbe615613565b6020026020010181815250505b600085610180015151118015612ce657508461018001515181105b15612d40578461018001518181518110612d0257612d02615613565b602002602001015160ff1686600001518380612d1d906155a7565b945081518110612d2f57612d2f615613565b602002602001018181525050612d6d565b8551819083612d4e816155a7565b945081518110612d6057612d60615613565b6020026020010181815250505b6000856101a0015151118015612d885750846101a001515181105b15612de857846101a001518181518110612da457612da4615613565b60200260200101516001600160a01b031686600001518380612dc5906155a7565b945081518110612dd757612dd7615613565b602002602001018181525050612e16565b855160009083612df7816155a7565b945081518110612e0957612e09615613565b6020026020010181815250505b612e1f816155a7565b9050612b7b565b50612e32602083615c02565b9150612e58604051806080016040528060448152602001615ece604491398651516131f6565b6104238583613669565b60606115be826136b9565b60606115be612e7b83613709565b6136b9565b6060612e8b82613843565b612e98608084901b613843565b60405161060f60f31b6020820152602281019290925260428201526062016040516020818303038152906040529050919050565b61137e8282604051602401612ee2929190615c76565b60408051601f198184030181529190526020810180516001600160e01b0316634b5c427760e01b1790526120b9565b6060612f406040518060400160405280600c81526020016b656e636f64654c697374203160a01b81525061151a565b6000612f4b836139ed565b9050612f7a6040518060400160405280600c81526020016b32b731b7b232a634b9ba101960a11b81525061151a565b611407612f89825160c0613b1d565b82613cd3565b60408051600560a21b8318601482015260348101909152606090611407816136b9565b8051600090601514612fc357600080fd5b6115be8261176f565b60006a636f6e736f6c652e6c6f679050600080835160208501845afa505050565b8051600090810361300057506000919050565b6020820151805160001a9060c082101561301e575060009392505050565b5060019392505050565b8051600090810361303b57506000919050565b60008061304b84602001516130a4565b846020015161305a91906157a7565b905060008460000151856020015161307291906157a7565b90505b80821015611253576130868261311f565b61309090836157a7565b91508261309c816155a7565b935050613075565b8051600090811a60808110156130bd5750600092915050565b60b88110806130d8575060c081108015906130d8575060f881105b156130e65750600192915050565b60c0811015613113576130fb600160b8615c9b565b6131089060ff1682615bcb565b6114079060016157a7565b6130fb600160f8615c9b565b80516000908190811a608081101561313a5760019150610500565b60b88110156131605761314e608082615bcb565b6131599060016157a7565b9150610500565b60c081101561318d5760b78103600185019450806020036101000a85510460018201810193505050610500565b60f88110156131a15761314e60c082615bcb565b60019390930151602084900360f7016101000a900490920160f5190192915050565b60006115be82604001516000815181106131df576131df615613565b6020026020010151600460ff16600060ff166122c6565b61137e828260405160240161320c929190615cb4565b60408051601f198184030181529190526020810180516001600160e01b0316632d839cb360e21b1790526120b9565b6106bf8160405160240161325191815260200190565b60408051601f198184030181529190526020810180516001600160e01b031663f82c50f160e01b1790526120b9565b600060656040518060400160405280600f81526020016e2930b73237b6a3b2b732b930ba37b960891b8152506040516132b991906155c0565b90815260405160209181900382019020546060840151918201516101008301516001600160a01b039092169263f41fdf5892906132f5906116de565b61330287606001516116fd565b6020880151606089015160c00151895160405160e089901b6001600160e01b03191681526101006004820152600261010482015261060f60f31b6101248201526001600160a01b03978816602482015263ffffffff968716604482015261ffff958616606482015294909316608485015290851660a48401529290921660c4820152911660e4820152610144016020604051808303816000875af11580156133ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115be9190615cd6565b61340782600001516000815181106133ec576133ec615613565b60200260200101518260ff16600860ff16600060ff16613d50565b8251805160009061341a5761341a615613565b6020026020010181815250505050565b613407826000015160008151811061344457613444615613565b60200260200101518260ff16600460ff166000600861346391906157ba565b60ff16613d50565b613407826000015160008151811061348557613485615613565b60200260200101518260ff16600460ff16600060086134a491906157ba565b6134af9060046157ba565b6134639060086157ba565b61340782600001516000815181106134d4576134d4615613565b60200260200101518260ff16600860ff16600060086134f391906157ba565b6134639060046157ba565b613407826000015160008151811061351857613518615613565b60200260200101518260ff16600860ff166000600861353791906157ba565b6135429060046157ba565b61354d9060086157ba565b6135589060046157ba565b6135639060106157ba565b61356e9060186157ba565b6135799060206157ba565b6135849060206157ba565b6134639060206157ba565b61340782600001516000815181106135a9576135a9615613565b60200260200101518262ffffff16601860ff16600060086135ca91906157ba565b6135d59060046157ba565b6135e09060086157ba565b6135eb9060046157ba565b6134639060106157ba565b613407826000015160008151811061361057613610615613565b60200260200101518263ffffffff16602060ff166000600861363291906157ba565b61363d9060046157ba565b6136489060086157ba565b6136539060046157ba565b61365e9060106157ba565b6134639060186157ba565b613407826000015160008151811061368357613683615613565b60200260200101518261ffff16601060ff16600060086136a391906157ba565b6136ae9060046157ba565b6134f39060086157ba565b606080825160011480156136e857506080836000815181106136dd576136dd615613565b016020015160f81c11155b156136f45750816115be565b61140761370384516080613b1d565b84613cd3565b6040805160208082528183019092526060916000919060208201818036833701905050905082602082015260005b602081101561377a5781818151811061375257613752615613565b01602001516001600160f81b03191660000361377a5780613772816155a7565b915050613737565b6000613787826020615bcb565b6001600160401b0381111561379e5761379e613ef5565b6040519080825280601f01601f1916602001820160405280156137c8576020820181803683370190505b50905060005b815181101561383a5783836137e2816155a7565b9450815181106137f4576137f4615613565b602001015160f81c60f81b82828151811061381157613811615613565b60200101906001600160f81b031916908160001a90535080613832816155a7565b9150506137ce565b50949350505050565b7aff00000000000000ff00000000000000ff00000000000000ff000063ffffffff60401b604083901c90811663ffffffff60c01b84161760201c63ffffffff60601b919091166001600160e01b031984161717601081901c91821678ff00000000000000ff00000000000000ff00000000000000ff60301b821617600890811c7bff00000000000000ff00000000000000ff00000000000000ff000000939093167fff00000000000000ff00000000000000ff00000000000000ff000000000000009290921691909117919091179081901c7e0f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f167f0f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f00600492831c161790613989827f06060606060606060606060606060606060606060606060606060606060606066157a7565b901c7f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f1660076139b991906157d3565b6139e3827f30303030303030303030303030303030303030303030303030303030303030306157a7565b6115be91906157a7565b60608151600003613a0e576040805160008082526020820190925290610500565b6000805b8351811015613a5557838181518110613a2d57613a2d615613565b60200260200101515182613a4191906157a7565b915080613a4d816155a7565b915050613a12565b6000826001600160401b03811115613a6f57613a6f613ef5565b6040519080825280601f01601f191660200182016040528015613a99576020820181803683370190505b50600092509050602081015b855183101561383a576000868481518110613ac257613ac2615613565b602002602001015190506000602082019050613ae083828451613d75565b878581518110613af257613af2615613565b60200260200101515183613b0691906157a7565b925050508280613b15906155a7565b935050613aa5565b6060806038841015613b875760408051600180825281830190925290602082018180368337019050509050613b5283856157a7565b601f1a60f81b81600081518110613b6b57613b6b615613565b60200101906001600160f81b031916908160001a905350611407565b600060015b613b968187615c33565b15613bbc5781613ba5816155a7565b9250613bb59050610100826157d3565b9050613b8c565b613bc78260016157a7565b6001600160401b03811115613bde57613bde613ef5565b6040519080825280601f01601f191660200182016040528015613c08576020820181803683370190505b509250613c1585836157a7565b613c209060376157a7565b601f1a60f81b83600081518110613c3957613c39615613565b60200101906001600160f81b031916908160001a905350600190505b818111613cca57610100613c698284615bcb565b613c7590610100615dd3565b613c7f9088615c33565b613c899190615c62565b601f1a60f81b838281518110613ca157613ca1615613565b60200101906001600160f81b031916908160001a90535080613cc2816155a7565b915050613c55565b50509392505050565b6060806040519050835180825260208201818101602087015b81831015613d04578051835260209283019201613cec565b50855184518101855292509050808201602086015b81831015613d31578051835260209283019201613d19565b508651929092011591909101601f01601f191660405250905092915050565b600083821b8183613d64600180881b615bcb565b901b19969096161795945050505050565b8282825b60208110613db15781518352613d906020846157a7565b9250613d9d6020836157a7565b9150613daa602082615bcb565b9050613d79565b8015613dea5760006001613dc6836020615bcb565b613dd290610100615dd3565b613ddc9190615bcb565b835185518216911916178452505b505050505050565b604051806040016040528060008152602001600081525090565b828054828255906000526020600020908101928215613e47579160200282015b82811115613e47578251825591602001919060010190613e2c565b50613e53929150613ee0565b5090565b604051806101c00160405280600060ff168152602001600060ff168152602001600060ff168152602001600060ff168152602001600062ffffff168152602001600063ffffffff168152602001600081526020016000815260200160008152602001600060ff168152602001606081526020016060815260200160608152602001606081525090565b5b80821115613e535760008155600101613ee1565b634e487b7160e01b600052604160045260246000fd5b60405161014081016001600160401b0381118282101715613f2e57613f2e613ef5565b60405290565b60405160a081016001600160401b0381118282101715613f2e57613f2e613ef5565b604080519081016001600160401b0381118282101715613f2e57613f2e613ef5565b604051608081016001600160401b0381118282101715613f2e57613f2e613ef5565b60405161018081016001600160401b0381118282101715613f2e57613f2e613ef5565b604051606081016001600160401b0381118282101715613f2e57613f2e613ef5565b60405161016081016001600160401b0381118282101715613f2e57613f2e613ef5565b604051601f8201601f191681016001600160401b038111828210171561402a5761402a613ef5565b604052919050565b6001600160a01b03811681146106bf57600080fd5b803561169e81614032565b803563ffffffff8116811461169e57600080fd5b60ff811681146106bf57600080fd5b803561169e81614066565b803561ffff8116811461169e57600080fd5b600061014082840312156140a557600080fd5b6140ad613f0b565b6140b683614047565b81526140c460208401614047565b60208201526140d560408401614047565b60408201526140e660608401614052565b60608201526140f760808401614052565b608082015261410860a08401614047565b60a082015261411960c08401614075565b60c082015261412a60e08401614080565b60e082015261010061413d818501614075565b9082015261012061414f848201614075565b908201529392505050565b60006001600160401b0382111561417357614173613ef5565b50601f01601f191660200190565b600082601f83011261419257600080fd5b81356141a56141a08261415a565b614002565b8181528460208386010111156141ba57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600080600080610100898b0312156141f457600080fd5b88356141ff81614032565b9750602089013561420f81614032565b9650604089013561421f81614032565b955061422d60608a01614052565b9450608089013561423d81614032565b935061424b60a08a01614052565b925060c08901356001600160401b0381111561426657600080fd5b6142728b828c01614181565b92505061428160e08a01614080565b90509295985092959890939650565b6020808252825182820182905280516040840181905260009291820190839060608601905b808310156142d557835182529284019260019290920191908401906142b5565b509695505050505050565b60005b838110156142fb5781810151838201526020016142e3565b50506000910152565b6000815180845261431c8160208601602086016142e0565b601f01601f19169290920160200192915050565b6020815260006114076020830184614304565b60008060008060008060c0878903121561435c57600080fd5b863561436781614032565b9550602087013561437781614032565b945061438560408801614052565b9350606087013561439581614032565b92506143a360808801614052565b91506143b160a08801614080565b90509295509295509295565b6020808252825182820181905260009190848201906040850190845b818110156143fe5783516001600160a01b0316835292840192918401916001016143d9565b50909695505050505050565b6000806000806080858703121561442057600080fd5b61442985614052565b935061443760208601614080565b9250604085013561444781614066565b915060608501356001600160401b0381111561446257600080fd5b61446e87828801614181565b91505092959194509250565b60006001600160401b0382111561449357614493613ef5565b5060051b60200190565b600060208083850312156144b057600080fd5b82356001600160401b03808211156144c757600080fd5b818501915085601f8301126144db57600080fd5b81356144e96141a08261447a565b81815260059190911b8301840190848101908883111561450857600080fd5b8585015b8381101561039c578035858111156145245760008081fd5b6145328b89838a0101614181565b84525091860191860161450c565b600080600080600060a0868803121561455857600080fd5b61456186614052565b945061456f60208701614080565b935061457d60408701614080565b9250606086013561458d81614066565b915060808601356001600160401b038111156145a857600080fd5b6145b488828901614181565b9150509295509295909350565b600082601f8301126145d257600080fd5b813560206145e26141a08361447a565b82815260059290921b8401810191818101908684111561460157600080fd5b8286015b848110156142d55780356001600160401b038082111561462457600080fd5b9088019060a0828b03601f1901121561463c57600080fd5b614644613f34565b8683013561465181614066565b815260408381013561466281614032565b828901526060848101358284015260808501359083015260a08401358381111561468c5760008081fd5b8085019450508b603f8501126146a457600092508283fd5b8784013592506146b66141a08461447a565b83815260069390931b8401810192888101908d8511156146d65760008081fd5b948201945b8486101561472d5782868f0312156146f35760008081fd5b6146fb613f56565b61470487614052565b81528a8701358060040b811461471a5760008081fd5b818c0152825294820194908901906146db565b6080840152505085525050918301918301614605565b60006080828403121561475557600080fd5b61475d613f78565b9050813561476a81614032565b8152602082013561477a81614066565b602082015260408201356001600160401b038082111561479957600080fd5b6147a585838601614181565b604084015260608401359150808211156147be57600080fd5b506147cb84828501614181565b60608301525092915050565b600080604083850312156147ea57600080fd5b82356001600160401b038082111561480157600080fd5b9084019060a0828703121561481557600080fd5b61481d613f34565b823561482881614032565b8152602083013561483881614032565b6020820152604083013561484b81614032565b604082015260608301358281111561486257600080fd5b8301610180818903121561487557600080fd5b61487d613f9a565b61488682614047565b815261489460208301614047565b60208201526148a560408301614047565b60408201526148b660608301614047565b60608201526080820135608082015260a082013560a08201526148db60c08301614052565b60c08201526148ec60e08301614052565b60e08201526101006148ff818401614052565b90820152610120614911838201614075565b90820152610140828101358581111561492957600080fd5b6149358b8286016145c1565b828401525050610160808301358581111561494f57600080fd5b61495b8b828601614181565b828401525050806060840152505061497560808401614075565b60808201529350602085013591508082111561499057600080fd5b5061499d85828601614743565b9150509250929050565b6020815260018060a01b03825116602082015260ff602083015116604082015260006040830151608060608401526149e260a0840182614304565b90506060840151601f198483030160808501526149ff8282614304565b95945050505050565b600082601f830112614a1957600080fd5b81356020614a296141a08361447a565b82815260059290921b84018101918181019086841115614a4857600080fd5b8286015b848110156142d55780358352918301918301614a4c565b600082601f830112614a7457600080fd5b81356020614a846141a08361447a565b82815260059290921b84018101918181019086841115614aa357600080fd5b8286015b848110156142d5578035614aba81614032565b8352918301918301614aa7565b600082601f830112614ad857600080fd5b81356020614ae86141a08361447a565b82815260059290921b84018101918181019086841115614b0757600080fd5b8286015b848110156142d55780356001600160401b0380821115614b2a57600080fd5b90880190601f196080838c0382011215614b4357600080fd5b614b4b613f78565b8784013583811115614b5c57600080fd5b84016060818e0384011215614b7057600080fd5b614b78613fbd565b925088810135614b8781614066565b8352604081810135614b9881614032565b848b0152606082013585811115614bae57600080fd5b614bbc8f8c83860101614a08565b8286015250838352614bcf818701614075565b8a8401526060860135935084841115614be757600080fd5b614bf58e8b86890101614a63565b90830152506080840135915082821115614c0e57600080fd5b614c1c8c8984870101614a08565b60608201528652505050918301918301614b0b565b600082601f830112614c4257600080fd5b81356020614c526141a08361447a565b82815260059290921b84018101918181019086841115614c7157600080fd5b8286015b848110156142d55780356001600160401b03811115614c945760008081fd5b614ca28986838b0101614181565b845250918301918301614c75565b600082601f830112614cc157600080fd5b81356020614cd16141a08361447a565b82815260059290921b84018101918181019086841115614cf057600080fd5b8286015b848110156142d55780356001600160401b0380821115614d145760008081fd5b9088019060a0828b03601f1901811315614d2e5760008081fd5b614d36613f34565b8784013583811115614d485760008081fd5b614d568d8a83880101614ac7565b8252506040614d66818601614075565b898301526060614d77818701614047565b82840152608091508186013585811115614d915760008081fd5b614d9f8f8c838a0101614a63565b82850152505082850135925083831115614db95760008081fd5b614dc78d8a85880101614c31565b908201528652505050918301918301614cf4565b600082601f830112614dec57600080fd5b81356020614dfc6141a08361447a565b82815260059290921b84018101918181019086841115614e1b57600080fd5b8286015b848110156142d5578035614e3281614066565b8352918301918301614e1f565b80356001600160401b038116811461169e57600080fd5b600082601f830112614e6757600080fd5b81356020614e776141a08361447a565b82815260059290921b84018101918181019086841115614e9657600080fd5b8286015b848110156142d55780356001600160401b0380821115614eba5760008081fd5b90880190610160828b03601f1901811315614ed55760008081fd5b614edd613fdf565b614ee8888501614080565b81526040614ef7818601614080565b898301526060614f08818701614075565b8284015260809150614f1b828701614052565b9083015260a0614f2c868201614075565b8284015260c09150614f3f828701614052565b9083015260e0614f50868201614052565b828401526101009150614f64828701614e3f565b908301526101208581013585811115614f7d5760008081fd5b614f8b8f8c838a0101614a63565b838501525061014091508186013585811115614fa75760008081fd5b614fb58f8c838a0101614c31565b828501525050614fc6838601614047565b908201528652505050918301918301614e9a565b600082601f830112614feb57600080fd5b81356020614ffb6141a08361447a565b82815260059290921b8401810191818101908684111561501a57600080fd5b8286015b848110156142d55780356001600160401b038082111561503e5760008081fd5b9088019060a0828b03601f19018113156150585760008081fd5b615060613f34565b61506b888501614052565b8152604080850135848111156150815760008081fd5b61508f8e8b83890101614181565b8a84015250606080860135858111156150a85760008081fd5b6150b68f8c838a0101614181565b83850152506080915081860135858111156150d15760008081fd5b6150df8f8c838a0101614181565b8285015250506150f0838601614075565b90820152865250505091830191830161501e565b6000806040838503121561511757600080fd5b61512083614052565b915060208301356001600160401b038082111561513c57600080fd5b90840190610160828703121561515157600080fd5b615159613fdf565b82358281111561516857600080fd5b61517488828601614cb0565b82525060208301358281111561518957600080fd5b61519588828601614ddb565b6020830152506040830135828111156151ad57600080fd5b6151b988828601614e56565b6040830152506060830135828111156151d157600080fd5b6151dd88828601614fda565b6060830152506080830135828111156151f557600080fd5b61520188828601614ddb565b60808301525060a08301358281111561521957600080fd5b61522588828601614a63565b60a08301525060c08301358281111561523d57600080fd5b61524988828601614a63565b60c08301525061525b60e08401614052565b60e082015261010061526e818501614052565b90820152610120615280848201614075565b90820152610140838101358381111561529857600080fd5b6152a489828701614181565b8284015250508093505050509250929050565b6000602082840312156152c957600080fd5b81356001600160401b03808211156152e057600080fd5b9083019061016082860312156152f557600080fd5b6152fd613fdf565b61530683614047565b815261531460208401614047565b602082015261532560408401614052565b604082015261533660608401614080565b606082015261534760808401614080565b608082015261535860a08401614075565b60a082015261536960c08401614047565b60c082015261537a60e08401614052565b60e082015261010061538d818501614047565b9082015261012061539f848201614075565b9082015261014083810135838111156153b757600080fd5b6153c388828701614181565b918301919091525095945050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561542957603f19888603018452615417858351614304565b945092850192908501906001016153fb565b5092979650505050505050565b60006020828403121561544857600080fd5b81356001600160401b0381111561545e57600080fd5b6115ba84828501614a63565b60008060006060848603121561547f57600080fd5b61548884614052565b925061549660208501614080565b915060408401356154a681614066565b809150509250925092565b6000602082840312156154c357600080fd5b813561140781614032565b600081518084526020808501945080840160005b8381101561550157815160ff16875295820195908201906001016154e2565b509495945050505050565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b8381101561558357888303603f1901855281518051878552615557888601826154ce565b91890151858303868b015291905061556f81836154ce565b968901969450505090860190600101615533565b509098975050505050505050565b634e487b7160e01b600052601160045260246000fd5b6000600182016155b9576155b9615591565b5060010190565b600082516155d28184602087016142e0565b9190910192915050565b6020808252601d908201527f73656e646572206e6f74206d6174636820617265612061646472657373000000604082015260600190565b634e487b7160e01b600052603260045260246000fd5b63ffffffff93909316835261ffff918216602084015216604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052602160045260246000fd5b60006156a46141a08461415a565b90508281528383830111156156b857600080fd5b6114078360208301846142e0565b6000602082840312156156d857600080fd5b81516001600160401b038111156156ee57600080fd5b8201601f810184136156ff57600080fd5b6115ba84825160208401615696565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b808201808211156115be576115be615591565b60ff81811683821601908111156115be576115be615591565b80820281158282048414176115be576115be615591565b805161169e81614032565b60006020828403121561580757600080fd5b815161140781614032565b805161169e81614066565b600082601f83011261582e57600080fd5b8151602061583e6141a08361447a565b82815260059290921b8401810191818101908684111561585d57600080fd5b8286015b848110156142d55780518352918301918301615861565b600082601f83011261588957600080fd5b815160206158996141a08361447a565b82815260059290921b840181019181810190868411156158b857600080fd5b8286015b848110156142d55780516158cf81614032565b83529183019183016158bc565b600082601f8301126158ed57600080fd5b815160206158fd6141a08361447a565b82815260059290921b8401810191818101908684111561591c57600080fd5b8286015b848110156142d55780516001600160401b038082111561593f57600080fd5b90880190601f196080838c038201121561595857600080fd5b615960613f78565b878401518381111561597157600080fd5b84016060818e038401121561598557600080fd5b61598d613fbd565b92508881015161599c81614066565b83526040818101516159ad81614032565b848b01526060820151858111156159c357600080fd5b6159d18f8c8386010161581d565b82860152508383526159e4818701615812565b8a84015260608601519350848411156159fc57600080fd5b615a0a8e8b86890101615878565b90830152506080840151915082821115615a2357600080fd5b615a318c898487010161581d565b60608201528652505050918301918301615920565b600082601f830112615a5757600080fd5b81516020615a676141a08361447a565b82815260059290921b84018101918181019086841115615a8657600080fd5b8286015b848110156142d55780516001600160401b03811115615aa95760008081fd5b8701603f81018913615abb5760008081fd5b615acc898683015160408401615696565b845250918301918301615a8a565b60008060408385031215615aed57600080fd5b82518015158114615afd57600080fd5b60208401519092506001600160401b0380821115615b1a57600080fd5b9084019060a08287031215615b2e57600080fd5b615b36613f34565b825182811115615b4557600080fd5b615b51888286016158dc565b825250615b6060208401615812565b6020820152615b71604084016157ea565b6040820152606083015182811115615b8857600080fd5b615b9488828601615878565b606083015250608083015182811115615bac57600080fd5b615bb888828601615a46565b6080830152508093505050509250929050565b818103818111156115be576115be615591565b805160208083015191908110156113f15760001960209190910360031b1b16919050565b61ffff81811683821601908082111561050057610500615591565b634e487b7160e01b600052601260045260246000fd5b600082615c4257615c42615c1d565b500490565b61ffff82811682821603908082111561050057610500615591565b600082615c7157615c71615c1d565b500690565b604081526000615c896040830185614304565b82810360208401526149ff8185614304565b60ff82811682821603908111156115be576115be615591565b604081526000615cc76040830185614304565b90508260208301529392505050565b600060208284031215615ce857600080fd5b5051919050565b600181815b80851115615d2a578160001904821115615d1057615d10615591565b80851615615d1d57918102915b93841c9390800290615cf4565b509250929050565b600082615d41575060016115be565b81615d4e575060006115be565b8160018114615d645760028114615d6e57615d8a565b60019150506115be565b60ff841115615d7f57615d7f615591565b50506001821b6115be565b5060208310610133831016604e8410600b8410161715615dad575081810a6115be565b615db78383615cef565b8060001904821115615dcb57615dcb615591565b029392505050565b60006114078383615d3256fe2d2d2d2d2d2d2d2d2d2d2d2d2d2d7265647061636b65742070726f6365737320626567696e20202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d20746f6b656e48616e646c657220736574506172616d7320746f6b656e436f756e742d2d2d2d2d2d2d2d2d2d2d2d20746f6b656e48616e646c657220736574506172616d7320312d2d2d2d2d2d2d2d2d2d2d2d2d2d7265647061636b65742070726f6365737320626567696e2036202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d7265647061636b65742070726f6365737320626567696e2035202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d20746f6b656e48616e646c657220736574506172616d7320746f6b656e436f756e742073656c662e76616c75654c6973742e6c656e677468a2646970667358221220482ea21ae2ce58670dc214665f667b6ca304fac84a74e64f25a486869f6f99b464736f6c63430008110033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
