{
  "_format": "hh-sol-artifact-1",
  "contractName": "ShoeRunningSnippet",
  "sourceName": "contracts/V3/snippet/ShoeRunningSnippet.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "stateCounter_",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "clusterArea_",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "caller",
              "type": "address"
            },
            {
              "internalType": "uint32",
              "name": "clusterId",
              "type": "uint32"
            },
            {
              "internalType": "uint8",
              "name": "inBranch",
              "type": "uint8"
            },
            {
              "internalType": "uint32",
              "name": "taskId",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "inTokenSlotIndex",
              "type": "uint32"
            },
            {
              "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": "inToken",
              "type": "tuple"
            }
          ],
          "internalType": "struct ISnippet.PreInputTokenParams",
          "name": "preInputToken",
          "type": "tuple"
        }
      ],
      "name": "preInputToken",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint8",
              "name": "erc",
              "type": "uint8"
            },
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "tokenId",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            },
            {
              "components": [
                {
                  "internalType": "uint32",
                  "name": "attrId",
                  "type": "uint32"
                },
                {
                  "internalType": "uint8",
                  "name": "attrOpt",
                  "type": "uint8"
                },
                {
                  "internalType": "uint8",
                  "name": "attrType",
                  "type": "uint8"
                },
                {
                  "internalType": "int40",
                  "name": "attrAmount",
                  "type": "int40"
                },
                {
                  "internalType": "string",
                  "name": "attrText",
                  "type": "string"
                },
                {
                  "internalType": "uint32",
                  "name": "parentAttrId",
                  "type": "uint32"
                },
                {
                  "internalType": "uint8",
                  "name": "attrState",
                  "type": "uint8"
                },
                {
                  "internalType": "bytes4",
                  "name": "attrFormula",
                  "type": "bytes4"
                }
              ],
              "internalType": "struct Attribute.AttributeOpt[]",
              "name": "attributeOptList",
              "type": "tuple[]"
            }
          ],
          "internalType": "struct ISnippet.TokenSnippet",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "caller",
              "type": "address"
            },
            {
              "internalType": "uint32",
              "name": "clusterId",
              "type": "uint32"
            },
            {
              "internalType": "uint8",
              "name": "inBranch",
              "type": "uint8"
            },
            {
              "internalType": "uint8",
              "name": "inRound",
              "type": "uint8"
            },
            {
              "internalType": "uint32",
              "name": "taskId",
              "type": "uint32"
            }
          ],
          "internalType": "struct ISnippet.ExecuteDelayParams",
          "name": "executeDelay",
          "type": "tuple"
        }
      ],
      "name": "processExecuteDelayTime",
      "outputs": [
        {
          "internalType": "int32",
          "name": "",
          "type": "int32"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "caller",
              "type": "address"
            },
            {
              "internalType": "uint32",
              "name": "clusterId",
              "type": "uint32"
            },
            {
              "internalType": "uint8",
              "name": "inBranch",
              "type": "uint8"
            },
            {
              "internalType": "uint8",
              "name": "inRound",
              "type": "uint8"
            },
            {
              "internalType": "uint8",
              "name": "ruleDurationType",
              "type": "uint8"
            },
            {
              "internalType": "uint32",
              "name": "ruleDelayTimestamp",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "ruleDelayBlockNumber",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "delayTimestamp",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "delayBlockNumber",
              "type": "uint32"
            },
            {
              "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": "struct ISnippet.InitDelayParams",
          "name": "initDelay",
          "type": "tuple"
        }
      ],
      "name": "processInitDelayTime",
      "outputs": [
        {
          "internalType": "int32",
          "name": "",
          "type": "int32"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "caller",
              "type": "address"
            },
            {
              "internalType": "uint32",
              "name": "clusterId",
              "type": "uint32"
            },
            {
              "internalType": "uint8",
              "name": "outBranch",
              "type": "uint8"
            },
            {
              "internalType": "uint32",
              "name": "taskId",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "inTokenSlotIndex",
              "type": "uint32"
            },
            {
              "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": "inToken",
              "type": "tuple"
            }
          ],
          "internalType": "struct ISnippet.InputTokenParams",
          "name": "inputToken",
          "type": "tuple"
        }
      ],
      "name": "processInputToken",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint8",
              "name": "erc",
              "type": "uint8"
            },
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "tokenId",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            },
            {
              "components": [
                {
                  "internalType": "uint32",
                  "name": "attrId",
                  "type": "uint32"
                },
                {
                  "internalType": "uint8",
                  "name": "attrOpt",
                  "type": "uint8"
                },
                {
                  "internalType": "uint8",
                  "name": "attrType",
                  "type": "uint8"
                },
                {
                  "internalType": "int40",
                  "name": "attrAmount",
                  "type": "int40"
                },
                {
                  "internalType": "string",
                  "name": "attrText",
                  "type": "string"
                },
                {
                  "internalType": "uint32",
                  "name": "parentAttrId",
                  "type": "uint32"
                },
                {
                  "internalType": "uint8",
                  "name": "attrState",
                  "type": "uint8"
                },
                {
                  "internalType": "bytes4",
                  "name": "attrFormula",
                  "type": "bytes4"
                }
              ],
              "internalType": "struct Attribute.AttributeOpt[]",
              "name": "attributeOptList",
              "type": "tuple[]"
            }
          ],
          "internalType": "struct ISnippet.TokenSnippet",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "caller",
              "type": "address"
            },
            {
              "internalType": "uint32",
              "name": "clusterId",
              "type": "uint32"
            },
            {
              "internalType": "uint8",
              "name": "outBranch",
              "type": "uint8"
            },
            {
              "internalType": "uint32",
              "name": "taskId",
              "type": "uint32"
            },
            {
              "internalType": "uint256",
              "name": "random",
              "type": "uint256"
            },
            {
              "internalType": "uint8",
              "name": "tokenSlotIndex",
              "type": "uint8"
            },
            {
              "internalType": "uint8",
              "name": "erc",
              "type": "uint8"
            },
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            }
          ],
          "internalType": "struct ISnippet.TokenSlotDelayParams",
          "name": "tokenSlotDelay",
          "type": "tuple"
        }
      ],
      "name": "processInputTokenSlotDelayTime",
      "outputs": [
        {
          "internalType": "int32",
          "name": "",
          "type": "int32"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "caller",
              "type": "address"
            },
            {
              "internalType": "uint32",
              "name": "clusterId",
              "type": "uint32"
            },
            {
              "internalType": "uint8",
              "name": "outBranch",
              "type": "uint8"
            },
            {
              "internalType": "uint32",
              "name": "taskId",
              "type": "uint32"
            },
            {
              "internalType": "uint256",
              "name": "random",
              "type": "uint256"
            },
            {
              "internalType": "uint32",
              "name": "outTokenSlotIndex",
              "type": "uint32"
            },
            {
              "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": "outToken",
              "type": "tuple"
            }
          ],
          "internalType": "struct ISnippet.OutputTokenParams",
          "name": "outputToken",
          "type": "tuple"
        }
      ],
      "name": "processOutputToken",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint8",
              "name": "erc",
              "type": "uint8"
            },
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "tokenId",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            },
            {
              "components": [
                {
                  "internalType": "uint32",
                  "name": "attrId",
                  "type": "uint32"
                },
                {
                  "internalType": "uint8",
                  "name": "attrOpt",
                  "type": "uint8"
                },
                {
                  "internalType": "uint8",
                  "name": "attrType",
                  "type": "uint8"
                },
                {
                  "internalType": "int40",
                  "name": "attrAmount",
                  "type": "int40"
                },
                {
                  "internalType": "string",
                  "name": "attrText",
                  "type": "string"
                },
                {
                  "internalType": "uint32",
                  "name": "parentAttrId",
                  "type": "uint32"
                },
                {
                  "internalType": "uint8",
                  "name": "attrState",
                  "type": "uint8"
                },
                {
                  "internalType": "bytes4",
                  "name": "attrFormula",
                  "type": "bytes4"
                }
              ],
              "internalType": "struct Attribute.AttributeOpt[]",
              "name": "attributeOptList",
              "type": "tuple[]"
            }
          ],
          "internalType": "struct ISnippet.TokenSnippet",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "caller",
              "type": "address"
            },
            {
              "internalType": "uint32",
              "name": "clusterId",
              "type": "uint32"
            },
            {
              "internalType": "uint8",
              "name": "outBranch",
              "type": "uint8"
            },
            {
              "internalType": "uint32",
              "name": "taskId",
              "type": "uint32"
            },
            {
              "internalType": "uint256",
              "name": "random",
              "type": "uint256"
            },
            {
              "internalType": "uint8",
              "name": "tokenSlotIndex",
              "type": "uint8"
            },
            {
              "internalType": "uint8",
              "name": "erc",
              "type": "uint8"
            },
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            }
          ],
          "internalType": "struct ISnippet.TokenSlotDelayParams",
          "name": "tokenSlotDelay",
          "type": "tuple"
        }
      ],
      "name": "processOutputTokenSlotDelayTime",
      "outputs": [
        {
          "internalType": "int32",
          "name": "",
          "type": "int32"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b5060405161110f38038061110f83398101604081905261002f9161007c565b600180546001600160a01b039384166001600160a01b031991821617909155600080549290931691161790556100af565b80516001600160a01b038116811461007757600080fd5b919050565b6000806040838503121561008f57600080fd5b61009883610060565b91506100a660208401610060565b90509250929050565b611051806100be6000396000f3fe608060405234801561001057600080fd5b506004361061006d5760003560e01c806324d56ffe146100725780635de70a0d1461009b5780636557196a146100c2578063814645dc1461009b5780638cb665ff146100d05780639090fa45146100e3578063b6ee96de146100f1575b600080fd5b6100856100803660046105d2565b6100ff565b60405161009291906106f9565b60405180910390f35b6100af6100a9366004610823565b50600090565b60405160039190910b8152602001610092565b6100af6100a936600461096f565b6100856100de366004610b41565b610115565b610085610080366004610b41565b6100af6100a9366004610b7d565b6101076102ff565b61010f6102ff565b92915050565b61011d6102ff565b6101256102ff565b826080015163ffffffff166001141561010f576001546060840151604051636c51371d60e11b815263ffffffff90911660048201526000916001600160a01b03169063d8a26e3a9060240160006040518083038186803b15801561018857600080fd5b505afa15801561019c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526101c49190810190610e15565b905060008161014001516000815181106101e0576101e0610f39565b60209081029190910181015160a0870180515160ff16865280518301516001600160a01b031686840152516040908101518187015280516001808252818301909252919350909182015b6040805161010081018252600080825260208083018290529282018190526060808301829052608083015260a0820181905260c0820181905260e0820152825260001990920191018161022a57505060808401819052805160009190829061029457610294610f39565b602090810291909101810151600681526001918101919091526002604082015260808301518051919250906000906102ce576102ce610f39565b6020026020010151602001516102e390610f65565b6102ee906002610f8a565b60040b606090910152505092915050565b6040518060a00160405280600060ff16815260200160006001600160a01b031681526020016000815260200160008152602001606081525090565b634e487b7160e01b600052604160045260246000fd5b60405160a081016001600160401b03811182821017156103725761037261033a565b60405290565b604080519081016001600160401b03811182821017156103725761037261033a565b60405160e081016001600160401b03811182821017156103725761037261033a565b60405161014081016001600160401b03811182821017156103725761037261033a565b60405161018081016001600160401b03811182821017156103725761037261033a565b604051601f8201601f191681016001600160401b038111828210171561042a5761042a61033a565b604052919050565b6001600160a01b038116811461044757600080fd5b50565b803561045581610432565b919050565b63ffffffff8116811461044757600080fd5b80356104558161045a565b60ff8116811461044757600080fd5b803561045581610477565b60006001600160401b038211156104aa576104aa61033a565b5060051b60200190565b8060040b811461044757600080fd5b600060a082840312156104d557600080fd5b6104dd610350565b905081356104ea81610477565b81526020828101356104fb81610432565b82820152604083810135818401526060808501359084015260808401356001600160401b0381111561052c57600080fd5b8401601f8101861361053d57600080fd5b803561055061054b82610491565b610402565b81815260069190911b8201840190848101908883111561056f57600080fd5b928501925b828410156105c15784848a03121561058c5760008081fd5b610594610378565b843561059f8161045a565b8152848701356105ae816104b4565b8188015282529284019290850190610574565b608087015250939695505050505050565b6000602082840312156105e457600080fd5b81356001600160401b03808211156105fb57600080fd5b9083019060e0828603121561060f57600080fd5b61061761039a565b6106208361044a565b815261062e6020840161046c565b602082015261063f60408401610486565b60408201526106506060840161046c565b60608201526080830135608082015261066b60a0840161046c565b60a082015260c08301358281111561068257600080fd5b61068e878286016104c3565b60c08301525095945050505050565b60005b838110156106b85781810151838201526020016106a0565b838111156106c7576000848401525b50505050565b600081518084526106e581602086016020860161069d565b601f01601f19169290920160200192915050565b6000602080835260c080840160ff808751168487015283870151604060018060a01b03821681890152808901519150606082818a0152808a01519250608083818b0152808b0151935060a080818c015286855180895260e09850888d019150888160051b8e01018b8801975060005b82811015610810578e820360df190184528851805163ffffffff1683528d8101518b168e8401528881015160ff16898401528781015160040b8884015286810151610100888501819052906107bf828601826106cd565b915050868201516107d78886018263ffffffff169052565b508d8201516107ea8f86018260ff169052565b50908c01516001600160e01b031916928c0192909252978c0197928c0192600101610768565b509e9d5050505050505050505050505050565b600061010080838503121561083757600080fd5b604051908101906001600160401b03821181831017156108595761085961033a565b816040528335915061086a82610432565b8181526108796020850161046c565b602082015261088a60408501610486565b604082015261089b6060850161046c565b6060820152608084013560808201526108b660a08501610486565b60a08201526108c760c08501610486565b60c08201526108d860e0850161044a565b60e0820152949350505050565b600082601f8301126108f657600080fd5b8135602061090661054b83610491565b82815260059290921b8401810191818101908684111561092557600080fd5b8286015b848110156109645780356001600160401b038111156109485760008081fd5b6109568986838b01016104c3565b845250918301918301610929565b509695505050505050565b60006020828403121561098157600080fd5b81356001600160401b038082111561099857600080fd5b9083019061014082860312156109ad57600080fd5b6109b56103bc565b6109be8361044a565b81526109cc6020840161046c565b60208201526109dd60408401610486565b60408201526109ee60608401610486565b60608201526109ff60808401610486565b6080820152610a1060a0840161046c565b60a0820152610a2160c0840161046c565b60c0820152610a3260e0840161046c565b60e0820152610100610a4581850161046c565b908201526101208381013583811115610a5d57600080fd5b610a69888287016108e5565b918301919091525095945050505050565b600060c08284031215610a8c57600080fd5b60405160c081016001600160401b038282108183111715610aaf57610aaf61033a565b8160405282935084359150610ac382610432565b908252602084013590610ad58261045a565b81602084015260408501359150610aeb82610477565b816040840152610afd6060860161046c565b6060840152610b0e6080860161046c565b608084015260a0850135915080821115610b2757600080fd5b50610b34858286016104c3565b60a0830152505092915050565b600060208284031215610b5357600080fd5b81356001600160401b03811115610b6957600080fd5b610b7584828501610a7a565b949350505050565b600060a08284031215610b8f57600080fd5b60405160a081018181106001600160401b0382111715610bb157610bb161033a565b6040528235610bbf81610432565b81526020830135610bcf8161045a565b60208201526040830135610be281610477565b60408201526060830135610bf581610477565b60608201526080830135610c088161045a565b60808201529392505050565b805161045581610432565b80516104558161045a565b805161045581610477565b600082601f830112610c4657600080fd5b81516020610c5661054b83610491565b82815260059290921b84018101918181019086841115610c7557600080fd5b8286015b848110156109645780516001600160401b0380821115610c9857600080fd5b9088019060a0828b03601f19011215610cb057600080fd5b610cb8610350565b86830151610cc581610477565b8152604083810151610cd681610432565b828901526060848101518284015260808501519083015260a084015183811115610d005760008081fd5b8085019450508b603f850112610d1857600092508283fd5b878401519250610d2a61054b84610491565b83815260069390931b8401810192888101908d851115610d4a5760008081fd5b948201945b84861015610d9c5782868f031215610d675760008081fd5b610d6f610378565b8651610d7a8161045a565b8152868b0151610d89816104b4565b818c015282529482019490890190610d4f565b6080840152505085525050918301918301610c79565b600082601f830112610dc357600080fd5b81516001600160401b03811115610ddc57610ddc61033a565b610def601f8201601f1916602001610402565b818152846020838601011115610e0457600080fd5b610b7582602083016020870161069d565b600060208284031215610e2757600080fd5b81516001600160401b0380821115610e3e57600080fd5b908301906101808286031215610e5357600080fd5b610e5b6103df565b610e6483610c14565b8152610e7260208401610c14565b6020820152610e8360408401610c14565b6040820152610e9460608401610c14565b60608201526080830151608082015260a083015160a0820152610eb960c08401610c1f565b60c0820152610eca60e08401610c1f565b60e0820152610100610edd818501610c1f565b90820152610120610eef848201610c2a565b908201526101408381015183811115610f0757600080fd5b610f1388828701610c35565b8284015250506101608084015183811115610f2d57600080fd5b610a6988828701610db2565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60008160040b647fffffffff19811415610f8157610f81610f4f565b60000392915050565b60008160040b8360040b647fffffffff600082136000841383830485118282161615610fb857610fb8610f4f565b647fffffffff196000851282811687830587121615610fd957610fd9610f4f565b60008712925085820587128484161615610ff557610ff5610f4f565b8585058712818416161561100b5761100b610f4f565b505050929091029594505050505056fea2646970667358221220e6040278afa32db062f1c05da74aaf73a42fe302cc4171db307b3371f11c50b464736f6c63430008080033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061006d5760003560e01c806324d56ffe146100725780635de70a0d1461009b5780636557196a146100c2578063814645dc1461009b5780638cb665ff146100d05780639090fa45146100e3578063b6ee96de146100f1575b600080fd5b6100856100803660046105d2565b6100ff565b60405161009291906106f9565b60405180910390f35b6100af6100a9366004610823565b50600090565b60405160039190910b8152602001610092565b6100af6100a936600461096f565b6100856100de366004610b41565b610115565b610085610080366004610b41565b6100af6100a9366004610b7d565b6101076102ff565b61010f6102ff565b92915050565b61011d6102ff565b6101256102ff565b826080015163ffffffff166001141561010f576001546060840151604051636c51371d60e11b815263ffffffff90911660048201526000916001600160a01b03169063d8a26e3a9060240160006040518083038186803b15801561018857600080fd5b505afa15801561019c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526101c49190810190610e15565b905060008161014001516000815181106101e0576101e0610f39565b60209081029190910181015160a0870180515160ff16865280518301516001600160a01b031686840152516040908101518187015280516001808252818301909252919350909182015b6040805161010081018252600080825260208083018290529282018190526060808301829052608083015260a0820181905260c0820181905260e0820152825260001990920191018161022a57505060808401819052805160009190829061029457610294610f39565b602090810291909101810151600681526001918101919091526002604082015260808301518051919250906000906102ce576102ce610f39565b6020026020010151602001516102e390610f65565b6102ee906002610f8a565b60040b606090910152505092915050565b6040518060a00160405280600060ff16815260200160006001600160a01b031681526020016000815260200160008152602001606081525090565b634e487b7160e01b600052604160045260246000fd5b60405160a081016001600160401b03811182821017156103725761037261033a565b60405290565b604080519081016001600160401b03811182821017156103725761037261033a565b60405160e081016001600160401b03811182821017156103725761037261033a565b60405161014081016001600160401b03811182821017156103725761037261033a565b60405161018081016001600160401b03811182821017156103725761037261033a565b604051601f8201601f191681016001600160401b038111828210171561042a5761042a61033a565b604052919050565b6001600160a01b038116811461044757600080fd5b50565b803561045581610432565b919050565b63ffffffff8116811461044757600080fd5b80356104558161045a565b60ff8116811461044757600080fd5b803561045581610477565b60006001600160401b038211156104aa576104aa61033a565b5060051b60200190565b8060040b811461044757600080fd5b600060a082840312156104d557600080fd5b6104dd610350565b905081356104ea81610477565b81526020828101356104fb81610432565b82820152604083810135818401526060808501359084015260808401356001600160401b0381111561052c57600080fd5b8401601f8101861361053d57600080fd5b803561055061054b82610491565b610402565b81815260069190911b8201840190848101908883111561056f57600080fd5b928501925b828410156105c15784848a03121561058c5760008081fd5b610594610378565b843561059f8161045a565b8152848701356105ae816104b4565b8188015282529284019290850190610574565b608087015250939695505050505050565b6000602082840312156105e457600080fd5b81356001600160401b03808211156105fb57600080fd5b9083019060e0828603121561060f57600080fd5b61061761039a565b6106208361044a565b815261062e6020840161046c565b602082015261063f60408401610486565b60408201526106506060840161046c565b60608201526080830135608082015261066b60a0840161046c565b60a082015260c08301358281111561068257600080fd5b61068e878286016104c3565b60c08301525095945050505050565b60005b838110156106b85781810151838201526020016106a0565b838111156106c7576000848401525b50505050565b600081518084526106e581602086016020860161069d565b601f01601f19169290920160200192915050565b6000602080835260c080840160ff808751168487015283870151604060018060a01b03821681890152808901519150606082818a0152808a01519250608083818b0152808b0151935060a080818c015286855180895260e09850888d019150888160051b8e01018b8801975060005b82811015610810578e820360df190184528851805163ffffffff1683528d8101518b168e8401528881015160ff16898401528781015160040b8884015286810151610100888501819052906107bf828601826106cd565b915050868201516107d78886018263ffffffff169052565b508d8201516107ea8f86018260ff169052565b50908c01516001600160e01b031916928c0192909252978c0197928c0192600101610768565b509e9d5050505050505050505050505050565b600061010080838503121561083757600080fd5b604051908101906001600160401b03821181831017156108595761085961033a565b816040528335915061086a82610432565b8181526108796020850161046c565b602082015261088a60408501610486565b604082015261089b6060850161046c565b6060820152608084013560808201526108b660a08501610486565b60a08201526108c760c08501610486565b60c08201526108d860e0850161044a565b60e0820152949350505050565b600082601f8301126108f657600080fd5b8135602061090661054b83610491565b82815260059290921b8401810191818101908684111561092557600080fd5b8286015b848110156109645780356001600160401b038111156109485760008081fd5b6109568986838b01016104c3565b845250918301918301610929565b509695505050505050565b60006020828403121561098157600080fd5b81356001600160401b038082111561099857600080fd5b9083019061014082860312156109ad57600080fd5b6109b56103bc565b6109be8361044a565b81526109cc6020840161046c565b60208201526109dd60408401610486565b60408201526109ee60608401610486565b60608201526109ff60808401610486565b6080820152610a1060a0840161046c565b60a0820152610a2160c0840161046c565b60c0820152610a3260e0840161046c565b60e0820152610100610a4581850161046c565b908201526101208381013583811115610a5d57600080fd5b610a69888287016108e5565b918301919091525095945050505050565b600060c08284031215610a8c57600080fd5b60405160c081016001600160401b038282108183111715610aaf57610aaf61033a565b8160405282935084359150610ac382610432565b908252602084013590610ad58261045a565b81602084015260408501359150610aeb82610477565b816040840152610afd6060860161046c565b6060840152610b0e6080860161046c565b608084015260a0850135915080821115610b2757600080fd5b50610b34858286016104c3565b60a0830152505092915050565b600060208284031215610b5357600080fd5b81356001600160401b03811115610b6957600080fd5b610b7584828501610a7a565b949350505050565b600060a08284031215610b8f57600080fd5b60405160a081018181106001600160401b0382111715610bb157610bb161033a565b6040528235610bbf81610432565b81526020830135610bcf8161045a565b60208201526040830135610be281610477565b60408201526060830135610bf581610477565b60608201526080830135610c088161045a565b60808201529392505050565b805161045581610432565b80516104558161045a565b805161045581610477565b600082601f830112610c4657600080fd5b81516020610c5661054b83610491565b82815260059290921b84018101918181019086841115610c7557600080fd5b8286015b848110156109645780516001600160401b0380821115610c9857600080fd5b9088019060a0828b03601f19011215610cb057600080fd5b610cb8610350565b86830151610cc581610477565b8152604083810151610cd681610432565b828901526060848101518284015260808501519083015260a084015183811115610d005760008081fd5b8085019450508b603f850112610d1857600092508283fd5b878401519250610d2a61054b84610491565b83815260069390931b8401810192888101908d851115610d4a5760008081fd5b948201945b84861015610d9c5782868f031215610d675760008081fd5b610d6f610378565b8651610d7a8161045a565b8152868b0151610d89816104b4565b818c015282529482019490890190610d4f565b6080840152505085525050918301918301610c79565b600082601f830112610dc357600080fd5b81516001600160401b03811115610ddc57610ddc61033a565b610def601f8201601f1916602001610402565b818152846020838601011115610e0457600080fd5b610b7582602083016020870161069d565b600060208284031215610e2757600080fd5b81516001600160401b0380821115610e3e57600080fd5b908301906101808286031215610e5357600080fd5b610e5b6103df565b610e6483610c14565b8152610e7260208401610c14565b6020820152610e8360408401610c14565b6040820152610e9460608401610c14565b60608201526080830151608082015260a083015160a0820152610eb960c08401610c1f565b60c0820152610eca60e08401610c1f565b60e0820152610100610edd818501610c1f565b90820152610120610eef848201610c2a565b908201526101408381015183811115610f0757600080fd5b610f1388828701610c35565b8284015250506101608084015183811115610f2d57600080fd5b610a6988828701610db2565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60008160040b647fffffffff19811415610f8157610f81610f4f565b60000392915050565b60008160040b8360040b647fffffffff600082136000841383830485118282161615610fb857610fb8610f4f565b647fffffffff196000851282811687830587121615610fd957610fd9610f4f565b60008712925085820587128484161615610ff557610ff5610f4f565b8585058712818416161561100b5761100b610f4f565b505050929091029594505050505056fea2646970667358221220e6040278afa32db062f1c05da74aaf73a42fe302cc4171db307b3371f11c50b464736f6c63430008080033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
