您当前的位置: 首页 >  ar

mutourend

暂无认证

  • 1浏览

    0关注

    661博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Polygon zkEVM的pil-stark Fibonacci状态机初体验

mutourend 发布时间:2022-08-19 17:16:44 ,浏览量:1

1. 引言

前序博客:

  • Polygon zkEVM 基本概念 第5章 “一个例子——Fibonacci state machine”

实操主要见:

  • 2022年8月8日Jordi Baylina(Iden3合伙人,Polygon Hermez zkEVM技术负责人)在Zcon3分享 Tooling for building zkEVM: PIL and Circom - Jordi Baylina at Zcon3 第24分钟。

相关代码见:

  • pil-stark:Generate a stark from a SM written in pil。(JavaScript)

pil-stark代码库的主要作用是:

  • 从某状态机生成stark证明。该状态机以PIL语言编写。

Polygon zkEVM中借用了iden3的circom工具,其与snarkjs的关系为: 在这里插入图片描述

总体流程为: 在这里插入图片描述

2. pil-stark Fibonacci状态机初体验

测试用例见pil-stark/test文件夹,以其中的sm_fibonacci为例:

  • 1)创建tmp文件夹,用于存储编译输出文件:mkdir tmp

  • 2)debug运行fibonacci buildconst:运行状态机中main_buildconst_fibonacci.js,输出为fibonacci.const

    /usr/local/bin/node --max-old-space-size=32000 test/sm_fibonacci/main_buildconst_fibonacci.js -o tmp/fibonacci.const
    file Generated Correctly
    
  • 3)debug运行fibonacci exec:运行main_exec_fibonacci.js,输入有fibonacci.input.json,输出为fibonacci.commit

    /usr/local/bin/node --max-old-space-size=32000 test/sm_fibonacci/main_exec_fibonacci.js -i test/sm_fibonacci/fibonacci.input.json -o tmp/fibonacci.commit
    Result: 74469561660084004
    file Generated Correctly
    
  • 4)debug运行fibonacci PIL verify:运行node_modules/pilcom/src/main_pilverifier.js,输入有:

    • 4.1)fibonacci.commit:为基于fibonacci.input.json运行状态机中main_exec_fibonacci.js获得的输出。【对pil中的commit多项式赋值】
    • 4.2)fibonacci_main.pil程序。
    • 4.3)fibonacci.const:为运行状态机中main_buildconst_fibonacci.js获得的输出。【对pil中的const多项式赋值】
    /usr/local/bin/node --max-old-space-size=32000 node_modules/pilcom/src/main_pilverifier.js tmp/fibonacci.commit -p test/sm_fibonacci/fibonacci_main.pil -c tmp/fibonacci.const
    loading tmp/fibonacci.const.. 0 of 0.001953125
    loading tmp/fibonacci.commit.. 0 of 0.001953125
    Preparing public 1/3
    calculateExpression: 0
    Preparing public 2/3
    Preparing public 3/3
    Checking identities 1/5
    calculateExpression: 1
    Checking identities 2/5
    calculateExpression: 3
    calculateExpression: 2
    Checking identities 3/5
    calculateExpression: 4
    Checking identities 4/5
    calculateExpression: 5
    Checking identities 5/5
    calculateExpression: 6
    PIL OK!!
    

    其中,verifyPil主要流程为:

    • a)将pil编译结果中的references各多项式索引信息分组分别存入refCm、refConst和refIm中;
    • b)依次将各commit多项式的赋值给pols.cm[i].v_n。将各const多项式的赋值给pols.const[i].v_n。给各public变量赋值,若源自cmP,则为pols.cm[pil.publics[i].polId].v_n[pil.publics[i].idx];若源自imP,则先调用calculateExpression(pil.publics[i].polId)计算相应的expression值,然后赋值pols.exps[pil.publics[i].polId].v_n[pil.publics[i].idx]
      for (let i=0; i pil-stark@0.0.13 fibonacci_compileverifier
      > circom --O1 --prime goldilocks --r1cs --sym --wasm --verbose tmp/fibonacci.verifier.circom -o tmp
      
      template instances: 29
      non-linear constraints: 216090
      linear constraints: 115823
      public inputs: 3
      public outputs: 0
      private inputs: 2280
      private outputs: 0
      wires: 496743
      labels: 678212
      Written successfully: tmp/fibonacci.verifier.r1cs
      Written successfully: tmp/fibonacci.verifier.sym
      Written successfully: tmp/fibonacci.verifier_js/fibonacci.verifier.wasm
      Everything went okay, circom safe
      Waiting for the debugger to disconnect...
      
    • 10)debug运行fibonacci C12 setup:运作compressor12/main_compressor12_setup.js,输入为fibonacci.verifier.r1cs,输出有:

      • 10.1)fibonacci.c12.pil
      • 10.2)fibonacci.c12.const
      • 10.3)fibonacci.c12.exec
      /usr/local/bin/node --max-old-space-size=32000 src/compressor12/main_compressor12_setup.js -r /Users/lanyu/zyd/0xPolygonHermez/pil-stark/tmp/fibonacci.verifier.r1cs -p /Users/lanyu/zyd/0xPolygonHermez/pil-stark/tmp/fibonacci.c12.pil -c /Users/lanyu/zyd/0xPolygonHermez/pil-stark/tmp/fibonacci.c12.const -e /Users/lanyu/zyd/0xPolygonHermez/pil-stark/tmp/fibonacci.c12.exec
      undefined: Loading constraints: 0/331913
      undefined: Loading constraints: 100000/331913
      undefined: Loading constraints: 200000/331913
      undefined: Loading constraints: 300000/331913
      undefined: Loading custom gate uses: 0/13845
      Plonk info constraint processing... 0/339443
      Plonk info constraint processing... 10000/339443
      Plonk info constraint processing... 20000/339443
      Plonk info constraint processing... 30000/339443
      Plonk info constraint processing... 40000/339443
      Plonk info constraint processing... 50000/339443
      Plonk info constraint processing... 60000/339443
      Plonk info constraint processing... 70000/339443
      Plonk info constraint processing... 80000/339443
      Plonk info constraint processing... 90000/339443
      Plonk info constraint processing... 100000/339443
      Plonk info constraint processing... 110000/339443
      Plonk info constraint processing... 120000/339443
      Plonk info constraint processing... 130000/339443
      Plonk info constraint processing... 140000/339443
      Plonk info constraint processing... 150000/339443
      Plonk info constraint processing... 160000/339443
      Plonk info constraint processing... 170000/339443
      Plonk info constraint processing... 180000/339443
      Plonk info constraint processing... 190000/339443
      Plonk info constraint processing... 200000/339443
      Plonk info constraint processing... 210000/339443
      Plonk info constraint processing... 220000/339443
      Plonk info constraint processing... 230000/339443
      Plonk info constraint processing... 240000/339443
      Plonk info constraint processing... 250000/339443
      Plonk info constraint processing... 260000/339443
      Plonk info constraint processing... 270000/339443
      Plonk info constraint processing... 280000/339443
      Plonk info constraint processing... 290000/339443
      Plonk info constraint processing... 300000/339443
      Plonk info constraint processing... 310000/339443
      Plonk info constraint processing... 320000/339443
      Plonk info constraint processing... 330000/339443
      ffffffff00000000,0,0,1,0 => 106084
      0,ffffffff00000000,1,1,0 => 5913
      1,0,0,ffffffff00000000,0 => 3642
      0,1,1,ffffffff00000000,0 => 1635
      0,ffffffff00000000,0,0,0 => 1517
      0,1,ffffffff00000000,1,0 => 1483
      0,1,ffffffff00000000,0,0 => 1135
      0,1,ffffffff00000000,ffffffff00000000,0 => 766
      ffffffff00000000,4a7a08980debbbfc,4a7a08980debbbfc,1,c61bd208ec3c0fa1 => 449
      ffffffff00000000,0,4a7a08980debbbfc,1,0 => 449
      ffffffff00000000,88b95a9fbc6de52a,88b95a9fbc6de52a,1,75ce679679451a15 => 449
      ffffffff00000000,0,88b95a9fbc6de52a,1,0 => 449
      ffffffff00000000,4d04f2cd3118664d,4d04f2cd3118664d,1,c3756f9932155297 => 449
      ffffffff00000000,0,4d04f2cd3118664d,1,0 => 449
      ffffffff00000000,f0989f5a7fcbd82a,f0989f5a7fcbd82a,1,ee347190fb432101 => 449
      ffffffff00000000,0,f0989f5a7fcbd82a,1,0 => 449
      ffffffff00000000,1ef29998af0b1fef,1ef29998af0b1fef,1,7138c73b09116996 => 449
      ffffffff00000000,0,1ef29998af0b1fef,1,0 => 449
      ffffffff00000000,7351eb33f82f6410,7351eb33f82f6410,1,18b6d0e3aeec489f => 449
      ffffffff00000000,0,7351eb33f82f6410,1,0 => 449
      ffffffff00000000,2bc7ac626a09c162,2bc7ac626a09c162,1,71afa5ff39384c97 => 449
      ffffffff00000000,0,2bc7ac626a09c162,1,0 => 449
      ffffffff00000000,1087e3821ca4b3c4,1087e3821ca4b3c4,1,b500968a50b4639e => 449
      ffffffff00000000,0,1087e3821ca4b3c4,1,0 => 449
      ffffffff00000000,323b5dc54f3bbbdb,323b5dc54f3bbbdb,1,fddd08812d4e5f9c => 449
      ffffffff00000000,0,323b5dc54f3bbbdb,1,0 => 449
      ffffffff00000000,d8805df640cc8402,d8805df640cc8402,1,c68b2f87b5ed9227 => 449
      ffffffff00000000,0,d8805df640cc8402,1,0 => 449
      ffffffff00000000,1e89ac5c625a8760,1e89ac5c625a8760,1,88818136a288ec90 => 449
      ffffffff00000000,0,1e89ac5c625a8760,1,0 => 449
      ffffffff00000000,3abcfd0cda24d38b,3abcfd0cda24d38b,1,e085319e9b6f3e7a => 449
      ffffffff00000000,0,3abcfd0cda24d38b,1,0 => 449
      ffffffff00000000,79d787dd08dd3780,79d787dd08dd3780,1,b875ba22cab61421 => 449
      ffffffff00000000,0,79d787dd08dd3780,1,0 => 449
      ffffffff00000000,a632e574be3e71ac,a632e574be3e71ac,1,57d26c1b01a1d8a => 449
      ffffffff00000000,0,a632e574be3e71ac,1,0 => 449
      ffffffff00000000,3c46e651b6a23a8d,3c46e651b6a23a8d,1,3b37aa4c7bdbf85b => 449
      ffffffff00000000,0,3c46e651b6a23a8d,1,0 => 449
      ffffffff00000000,5b7b3b391095f880,5b7b3b391095f880,1,284556ef72cc8092 => 449
      ffffffff00000000,0,5b7b3b391095f880,1,0 => 449
      ffffffff00000000,cf7442db23abe935,cf7442db23abe935,1,34e12532d49bc4dc => 449
      ffffffff00000000,0,cf7442db23abe935,1,0 => 449
      ffffffff00000000,91b5bf3d70cf3f65,91b5bf3d70cf3f65,1,26920ca9f36f8dc7 => 449
      ffffffff00000000,0,91b5bf3d70cf3f65,1,0 => 449
      ffffffff00000000,65d11247f2707307,65d11247f2707307,1,d857a28fb2c421ab => 449
      ffffffff00000000,0,65d11247f2707307,1,0 => 449
      ffffffff00000000,1c9f391e51b790c9,1c9f391e51b790c9,1,8c74b3f7223aa763 => 449
      ffffffff00000000,0,1c9f391e51b790c9,1,0 => 449
      ffffffff00000000,2a388e6f4039b806,2a388e6f4039b806,1,9a103489b100a053 => 449
      ffffffff00000000,0,2a388e6f4039b806,1,0 => 449
      ffffffff00000000,3ca151f7e6fc00f6,3ca151f7e6fc00f6,1,eef35d88a609158 => 449
      ffffffff00000000,0,3ca151f7e6fc00f6,1,0 => 449
      ffffffff00000000,7b63d9a86963b41a,7b63d9a86963b41a,1,4bba55aa033ecb1a => 449
      ffffffff00000000,0,7b63d9a86963b41a,1,0 => 449
      ffffffff00000000,3fa8d372f7344454,3fa8d372f7344454,1,eca3e14ceeaeb136 => 449
      ffffffff00000000,0,3fa8d372f7344454,1,0 => 449
      ffffffff00000000,16059cb4de21ff7f,16059cb4de21ff7f,1,bed7e03755429ce => 449
      ffffffff00000000,0,16059cb4de21ff7f,1,0 => 449
      ffffffff00000000,a9092b66a659ff4,a9092b66a659ff4,1,fcb9ba16f792d2b7 => 449
      ffffffff00000000,0,a9092b66a659ff4,1,0 => 449
      ffffffff00000000,828ec16f9c6ee9c,828ec16f9c6ee9c,1,f4e5eac2a11101e8 => 449
      ffffffff00000000,0,828ec16f9c6ee9c,1,0 => 449
      ffffffff00000000,7d68ecd3cd7da252,7d68ecd3cd7da252,1,e631f0801c4a98b9 => 449
      ffffffff00000000,0,7d68ecd3cd7da252,1,0 => 449
      ffffffff00000000,5297fa1e1cf4d377,5297fa1e1cf4d377,1,57fb75397922986 => 449
      ffffffff00000000,0,5297fa1e1cf4d377,1,0 => 449
      ffffffff00000000,53ae26090307aca3,53ae26090307aca3,1,90ba84aaf5e2b8f1 => 449
      ffffffff00000000,0,53ae26090307aca3,1,0 => 449
      ffffffff00000000,afd52822e73d527a,afd52822e73d527a,1,586ae3c6c944c0b => 449
      ffffffff00000000,0,afd52822e73d527a,1,0 => 449
      ffffffff00000000,a85eaaf2eef4cfc0,a85eaaf2eef4cfc0,1,ceffc43f9654abbc => 449
      ffffffff00000000,0,a85eaaf2eef4cfc0,1,0 => 449
      ffffffff00000000,99442cf0931f1a7e,99442cf0931f1a7e,1,f9895cb3b20da4b4 => 449
      ffffffff00000000,0,99442cf0931f1a7e,1,0 => 449
      ffffffff00000000,f25d540fa7629bb3,f25d540fa7629bb3,1,eb5429158f26a89d => 449
      ffffffff00000000,0,f25d540fa7629bb3,1,0 => 449
      ffffffff00000000,f9ed8af24eaf2a0,f9ed8af24eaf2a0,1,149a3cd0446e3c87 => 449
      ffffffff00000000,0,f9ed8af24eaf2a0,1,0 => 449
      ffffffff00000000,d74713c4163d69ce,d74713c4163d69ce,1,c8689c5d0ac80474 => 449
      ffffffff00000000,0,d74713c4163d69ce,1,0 => 449
      ffffffff00000000,6d58a91881d46bee,6d58a91881d46bee,1,811a3ea0f21d5126 => 449
      ffffffff00000000,0,6d58a91881d46bee,1,0 => 449
      ffffffff00000000,8f18be1301169a7b,8f18be1301169a7b,1,7c5da2b0db881b7e => 449
      ffffffff00000000,0,8f18be1301169a7b,1,0 => 449
      ffffffff00000000,fe62a11c507d13e5,fe62a11c507d13e5,1,6230bec05c648678 => 449
      ffffffff00000000,0,fe62a11c507d13e5,1,0 => 449
      ffffffff00000000,9090d1278db99caf,9090d1278db99caf,1,d574aae62da15a33 => 449
      ffffffff00000000,0,9090d1278db99caf,1,0 => 449
      ffffffff00000000,830be92f181eb360,830be92f181eb360,1,848d5ca5cc080dfe => 449
      ffffffff00000000,0,830be92f181eb360,1,0 => 449
      ffffffff00000000,9e20ae83795b9bc8,9e20ae83795b9bc8,1,d7508f949452f707 => 449
      ffffffff00000000,0,9e20ae83795b9bc8,1,0 => 449
      ffffffff00000000,7a23b663ee28848c,7a23b663ee28848c,1,41713ccda295d50 => 449
      ffffffff00000000,0,7a23b663ee28848c,1,0 => 449
      ffffffff00000000,b46a64b6463ef8ce,b46a64b6463ef8ce,1,3cdd28d942e7a6c5 => 449
      ffffffff00000000,0,b46a64b6463ef8ce,1,0 => 449
      ffffffff00000000,1741c1a157fbc1aa,1741c1a157fbc1aa,1,d49067f60471b3ca => 449
      ffffffff00000000,0,1741c1a157fbc1aa,1,0 => 449
      ffffffff00000000,a3f43e119257968,a3f43e119257968,1,3a2ae8f86f866db5 => 449
      ffffffff00000000,0,a3f43e119257968,1,0 => 449
      ffffffff00000000,bf4ed33ff6108b42,bf4ed33ff6108b42,1,7f17bb53dd6f1bf7 => 449
      ffffffff00000000,0,bf4ed33ff6108b42,1,0 => 449
      ffffffff00000000,59c8f6c034d529d0,59c8f6c034d529d0,1,f5198387236dca52 => 449
      ffffffff00000000,0,59c8f6c034d529d0,1,0 => 449
      ffffffff00000000,c33c076ce7b20bf9,c33c076ce7b20bf9,1,9c767dc4f44e25e6 => 449
      ffffffff00000000,0,c33c076ce7b20bf9,1,0 => 449
      ffffffff00000000,8ece55b9d9728275,8ece55b9d9728275,1,f3d47e2cc4047246 => 449
      ffffffff00000000,0,8ece55b9d9728275,1,0 => 449
      ffffffff00000000,6652e553f7ebd7c6,6652e553f7ebd7c6,1,b94ecdd6da4e1492 => 449
      ffffffff00000000,0,6652e553f7ebd7c6,1,0 => 449
      ffffffff00000000,147b09f625a910b9,147b09f625a910b9,1,b3c8b5917b17a566 => 449
      ffffffff00000000,0,147b09f625a910b9,1,0 => 449
      ffffffff00000000,8ea632ce3c53ee73,8ea632ce3c53ee73,1,87f3508aa34953b1 => 449
      ffffffff00000000,0,8ea632ce3c53ee73,1,0 => 449
      ffffffff00000000,2310f8673d49613a,2310f8673d49613a,1,37f56bd3017e8e0b => 449
      ffffffff00000000,0,2310f8673d49613a,1,0 => 449
      ffffffff00000000,2f89d3427359a8f5,2f89d3427359a8f5,1,873c591232c868b4 => 449
      ffffffff00000000,0,2f89d3427359a8f5,1,0 => 449
      ffffffff00000000,cf5b97f96cda7c7a,cf5b97f96cda7c7a,1,c387f11c3f3bc078 => 449
      ffffffff00000000,0,cf5b97f96cda7c7a,1,0 => 449
      ffffffff00000000,ea5e95747cdd2ba9,ea5e95747cdd2ba9,1,14a9dee0c265ab32 => 449
      ffffffff00000000,0,ea5e95747cdd2ba9,1,0 => 449
      ffffffff00000000,a5c0e44d3ac569bc,a5c0e44d3ac569bc,1,34352e5c2182bffa => 449
      ffffffff00000000,0,a5c0e44d3ac569bc,1,0 => 449
      ffffffff00000000,88affa66d28b280a,88affa66d28b280a,1,d6df4562ed1103f2 => 449
      ffffffff00000000,0,88affa66d28b280a,1,0 => 449
      ffffffff00000000,6336a3cd4b3e035,6336a3cd4b3e035,1,79defca543f7451d => 449
      ffffffff00000000,0,6336a3cd4b3e035,1,0 => 449
      ffffffff00000000,f3b6c9934da17aee,f3b6c9934da17aee,1,ae04f738c32c6592 => 449
      ffffffff00000000,0,f3b6c9934da17aee,1,0 => 449
      ffffffff00000000,229ee0eeff3e8bbf,229ee0eeff3e8bbf,1,d071730c6e5469fa => 449
      ffffffff00000000,0,229ee0eeff3e8bbf,1,0 => 449
      ffffffff00000000,fd00788f5a10683d,fd00788f5a10683d,1,bd77aec474c37281 => 449
      ffffffff00000000,0,fd00788f5a10683d,1,0 => 449
      ffffffff00000000,c2f93741eaeb1d28,c2f93741eaeb1d28,1,c7c9efb5bf14d96 => 449
      ffffffff00000000,0,c2f93741eaeb1d28,1,0 => 449
      ffffffff00000000,176327aa2a2fe2ce,176327aa2a2fe2ce,1,a3adbd45a0e51f86 => 449
      ffffffff00000000,0,176327aa2a2fe2ce,1,0 => 449
      ffffffff00000000,131a58e0f301238c,131a58e0f301238c,1,7dd76d457e044b95 => 449
      ffffffff00000000,0,131a58e0f301238c,1,0 => 449
      ffffffff00000000,6fffb3eb8e476c3c,6fffb3eb8e476c3c,1,bdcd6dfb9d0fb33b => 449
      ffffffff00000000,0,6fffb3eb8e476c3c,1,0 => 449
      ffffffff00000000,21edd413165c6c99,21edd413165c6c99,1,cc619baac34093c5 => 449
      ffffffff00000000,0,21edd413165c6c99,1,0 => 449
      ffffffff00000000,b29e1a94ada2dda7,b29e1a94ada2dda7,1,4700e8d31319d68f => 449
      ffffffff00000000,0,b29e1a94ada2dda7,1,0 => 449
      ffffffff00000000,eb872c9d24406055,eb872c9d24406055,1,2513a2c9380268bd => 449
      ffffffff00000000,0,eb872c9d24406055,1,0 => 449
      ffffffff00000000,b8a32cdea5c42323,b8a32cdea5c42323,1,602846d4ce6eb6a0 => 449
      ffffffff00000000,0,b8a32cdea5c42323,1,0 => 449
      ffffffff00000000,e75bdef93ce48179,e75bdef93ce48179,1,af2179964b5ea68e => 449
      ffffffff00000000,0,e75bdef93ce48179,1,0 => 449
      ffffffff00000000,fdc18bea5099cf99,fdc18bea5099cf99,1,b03801e4f5632daf => 449
      ffffffff00000000,0,fdc18bea5099cf99,1,0 => 449
      ffffffff00000000,eaeb8ef6ede6982a,eaeb8ef6ede6982a,1,c1bb003281c2c4da => 449
      ffffffff00000000,0,eaeb8ef6ede6982a,1,0 => 449
      ffffffff00000000,1b5c200d28290108,1b5c200d28290108,1,63963fe4024c4e12 => 449
      ffffffff00000000,0,1b5c200d28290108,1,0 => 449
      ffffffff00000000,fe572e5977f7a8ca,fe572e5977f7a8ca,1,b85c99621edea1ee => 449
      ffffffff00000000,0,fe572e5977f7a8ca,1,0 => 449
      ffffffff00000000,ee4b38b0259d4112,ee4b38b0259d4112,1,1387d90e92e5c708 => 449
      ffffffff00000000,0,ee4b38b0259d4112,1,0 => 449
      ffffffff00000000,1a7833f19658ccbb,1a7833f19658ccbb,1,780eb4774a03351f => 449
      ffffffff00000000,0,1a7833f19658ccbb,1,0 => 449
      ffffffff00000000,e008cd8ee855d593,e008cd8ee855d593,1,c81b080b62d6609e => 449
      ffffffff00000000,0,e008cd8ee855d593,1,0 => 449
      ffffffff00000000,a6b1d63adb8c2f96,a6b1d63adb8c2f96,1,cdd2a7b1f9068ba2 => 449
      ffffffff00000000,0,a6b1d63adb8c2f96,1,0 => 449
      ffffffff00000000,90ce24d7664ed2c,90ce24d7664ed2c,1,9803627abbda779e => 449
      ffffffff00000000,0,90ce24d7664ed2c,1,0 => 449
      ffffffff00000000,3fd53a1a8ced2c37,3fd53a1a8ced2c37,1,25f48bb1d12cf96d => 449
      ffffffff00000000,0,3fd53a1a8ced2c37,1,0 => 449
      ffffffff00000000,18fdfe159f348749,18fdfe159f348749,1,eadb3640580ff9c5 => 449
      ffffffff00000000,0,18fdfe159f348749,1,0 => 449
      ffffffff00000000,906f00c3959a0ef9,906f00c3959a0ef9,1,f208dca724f284ac => 449
      ffffffff00000000,0,906f00c3959a0ef9,1,0 => 449
      ffffffff00000000,bd8b858cba18057d,bd8b858cba18057d,1,59bc1e23f80e451d => 449
      ffffffff00000000,0,bd8b858cba18057d,1,0 => 449
      ffffffff00000000,2e0af81ac548b64f,2e0af81ac548b64f,1,e05b7e7a5574f17e => 449
      ffffffff00000000,0,2e0af81ac548b64f,1,0 => 449
      ffffffff00000000,e3792d990ea8af34,e3792d990ea8af34,1,c1f93cb240c62a80 => 449
      ffffffff00000000,0,e3792d990ea8af34,1,0 => 449
      ffffffff00000000,c669318b227cd3e5,c669318b227cd3e5,1,c9c2e52cb79d8a03 => 449
      ffffffff00000000,0,c669318b227cd3e5,1,0 => 449
      ffffffff00000000,718045fc67cddb44,718045fc67cddb44,1,5140cbe776caa63e => 449
      ffffffff00000000,0,718045fc67cddb44,1,0 => 449
      ffffffff00000000,45f2138dfcdaa22d,45f2138dfcdaa22d,1,a605375c63f9b29b => 449
      ffffffff00000000,0,45f2138dfcdaa22d,1,0 => 449
      ffffffff00000000,61634286e9d703a6,61634286e9d703a6,1,1e31d83f9b02b400 => 449
      ffffffff00000000,0,61634286e9d703a6,1,0 => 449
      ffffffff00000000,25179ba56912295c,25179ba56912295c,1,381f86dbdc7b1570 => 449
      ffffffff00000000,0,25179ba56912295c,1,0 => 449
      ffffffff00000000,2141f7ab4e5e2c89,2141f7ab4e5e2c89,1,ade28607aac4c8b3 => 449
      ffffffff00000000,0,2141f7ab4e5e2c89,1,0 => 449
      ffffffff00000000,5b6dd62cb2febcbe,5b6dd62cb2febcbe,1,6d6df090b0f7f28c => 449
      ffffffff00000000,0,5b6dd62cb2febcbe,1,0 => 449
      ffffffff00000000,841a45ff256fa1e5,841a45ff256fa1e5,1,c4c65034b0c58624 => 449
      ffffffff00000000,0,841a45ff256fa1e5,1,0 => 449
      ffffffff00000000,5c36a1503dbb55d1,5c36a1503dbb55d1,1,2e0bf3e12afb927c => 449
      ffffffff00000000,0,5c36a1503dbb55d1,1,0 => 449
      ffffffff00000000,fdcf43560b20fabd,fdcf43560b20fabd,1,299b6b8b21a8f90b => 449
      ffffffff00000000,0,fdcf43560b20fabd,1,0 => 449
      ffffffff00000000,beca3d40401eb73b,beca3d40401eb73b,1,68ec6e0fb071e23b => 449
      ffffffff00000000,0,beca3d40401eb73b,1,0 => 449
      ffffffff00000000,e9903f32bc75c38f,e9903f32bc75c38f,1,e65a777fabb1fb7 => 449
      ffffffff00000000,0,e9903f32bc75c38f,1,0 => 449
      ffffffff00000000,c89d4a647517c107,c89d4a647517c107,1,95e9760842338e8c => 449
      ffffffff00000000,0,c89d4a647517c107,1,0 => 449
      ffffffff00000000,176d75b276eeb8b1,176d75b276eeb8b1,1,99c5a563693eb92c => 449
      ffffffff00000000,0,176d75b276eeb8b1,1,0 => 449
      ffffffff00000000,d5bbf4ad5b6ba11c,d5bbf4ad5b6ba11c,1,549d995e90e5a918 => 449
      ffffffff00000000,0,d5bbf4ad5b6ba11c,1,0 => 449
      ffffffff00000000,7f3102d38266007e,7f3102d38266007e,1,cd05ad4d32a887f => 449
      ffffffff00000000,0,7f3102d38266007e,1,0 => 449
      ffffffff00000000,4467863819e029d7,4467863819e029d7,1,73e617cea734698 => 449
      ffffffff00000000,0,4467863819e029d7,1,0 => 449
      ffffffff00000000,918370e47bd9afcd,918370e47bd9afcd,1,f8c68091625e5173 => 449
      ffffffff00000000,0,918370e47bd9afcd,1,0 => 449
      ffffffff00000000,e9b44d20e4412239,e9b44d20e4412239,1,a678b8cb54d0dc1f => 449
      ffffffff00000000,0,e9b44d20e4412239,1,0 => 449
      ffffffff00000000,c3ed019b2a39ac6,c3ed019b2a39ac6,1,5d9e76ea113ac468 => 449
      ffffffff00000000,0,c3ed019b2a39ac6,1,0 => 449
      ffffffff00000000,bf4616dc12688e1f,bf4616dc12688e1f,1,81bae26e50afe726 => 449
      ffffffff00000000,0,bf4616dc12688e1f,1,0 => 449
      ffffffff00000000,aae0a4ef4184e7c1,aae0a4ef4184e7c1,1,9a68a3026f33d89e => 449
      ffffffff00000000,0,aae0a4ef4184e7c1,1,0 => 449
      ffffffff00000000,dafcd5573b34e7f0,dafcd5573b34e7f0,1,3869b9c560d857a => 449
      ffffffff00000000,0,dafcd5573b34e7f0,1,0 => 449
      ffffffff00000000,5512cbf7b4e9bcbb,5512cbf7b4e9bcbb,1,2c044589dc37bd07 => 449
      ffffffff00000000,0,5512cbf7b4e9bcbb,1,0 => 449
      ffffffff00000000,70026943063637e4,70026943063637e4,1,704b8a285661ef76 => 449
      ffffffff00000000,0,70026943063637e4,1,0 => 449
      ffffffff00000000,8f036e13a6c8f7a5,8f036e13a6c8f7a5,1,40b2e05d2aa456e4 => 449
      ffffffff00000000,0,8f036e13a6c8f7a5,1,0 => 449
      ffffffff00000000,8086a1d4a06eabc1,8086a1d4a06eabc1,1,70c07dcc64c34324 => 449
      ffffffff00000000,0,8086a1d4a06eabc1,1,0 => 449
      ffffffff00000000,babc261fab892c36,babc261fab892c36,1,d7f207cc143c06da => 449
      ffffffff00000000,0,babc261fab892c36,1,0 => 449
      ffffffff00000000,e8d28c0ffb036f4,e8d28c0ffb036f4,1,274afbb35495b542 => 449
      ffffffff00000000,0,e8d28c0ffb036f4,1,0 => 449
      ffffffff00000000,202e3b004337edc9,202e3b004337edc9,1,2003c4c9174f11d0 => 449
      ffffffff00000000,0,202e3b004337edc9,1,0 => 449
      ffffffff00000000,4372049c801aa705,4372049c801aa705,1,65385145be4ea9f0 => 449
      ffffffff00000000,0,4372049c801aa705,1,0 => 449
      0,1,ffffffff00000000,0,2e479dc157bf31bb => 449
      0,1,ffffffff00000000,0,6f49de07a6234346 => 449
      0,1,ffffffff00000000,0,213ce7bede378d7b => 449
      0,1,ffffffff00000000,0,5b0431345d4dea83 => 449
      0,1,ffffffff00000000,0,a2de45780344d6a1 => 449
      0,1,ffffffff00000000,0,7103aaf94a7bf308 => 449
      0,1,ffffffff00000000,0,5326fc0d97279301 => 449
      0,1,ffffffff00000000,0,a9ceb74fec024747 => 449
      0,1,ffffffff00000000,0,27f8ec88bb21b1a3 => 449
      0,1,ffffffff00000000,0,fceb4fda1ded0893 => 449
      0,1,ffffffff00000000,0,fac6ff1346a41675 => 449
      0,1,ffffffff00000000,0,9351036095630f9f => 449
      0,1,ffffffff00000000,0,ad535b24afc26bfb => 449
      0,1,ffffffff00000000,0,4627f5c6993e44be => 449
      0,1,ffffffff00000000,0,645cf794b8f1cc58 => 449
      0,1,ffffffff00000000,0,241c70ed0af61617 => 449
      0,1,ffffffff00000000,0,acb8e076647905f1 => 449
      0,1,ffffffff00000000,0,3737e9db4c4f474d => 449
      0,1,ffffffff00000000,0,e7ea5e33e75fffb6 => 449
      0,1,ffffffff00000000,0,90dee49fc9bfc23a => 449
      0,1,ffffffff00000000,0,d1b1edf76bc09c92 => 449
      0,1,ffffffff00000000,0,b65481ba645c602 => 449
      0,1,ffffffff00000000,0,438a7c91d416ca4d => 449
      0,1,ffffffff00000000,0,b60de3bcc5ea751c => 449
      0,1,ffffffff00000000,0,c99cab6aef6f58bc => 449
      0,1,ffffffff00000000,0,69a5ed92a72ee4ff => 449
      0,1,ffffffff00000000,0,5e7b329c1ed4ad71 => 449
      0,1,ffffffff00000000,0,5fc0ac0800144885 => 449
      0,1,ffffffff00000000,0,32db829239774eca => 449
      0,1,ffffffff00000000,0,ade699c5830f310 => 449
      0,1,ffffffff00000000,0,7cc5583b10415f21 => 449
      0,1,ffffffff00000000,0,85df9ed2e166d64f => 449
      0,1,ffffffff00000000,0,6604df4fee32bcb1 => 449
      0,1,ffffffff00000000,0,da608834c40e603d => 449
      0,1,ffffffff00000000,0,8f97fe408061f183 => 449
      0,1,ffffffff00000000,0,a93f485c96f37b89 => 449
      0,1,ffffffff00000000,0,6704e8ee8f18d563 => 449
      0,1,ffffffff00000000,0,cee3e9ac1e072119 => 449
      0,1,ffffffff00000000,0,510d0e65e2b470c1 => 449
      0,1,ffffffff00000000,0,f6323f486b9038f0 => 449
      0,1,ffffffff00000000,0,b508cdeffa5ceef => 449
      0,1,ffffffff00000000,0,f2417089e4fb3cbd => 449
      0,1,ffffffff00000000,0,60e75c2890d15730 => 449
      0,1,ffffffff00000000,0,a6217d8bf660f29c => 449
      0,1,ffffffff00000000,0,839b4e8fafead540 => 449
      0,1,ffffffff00000000,0,d3f3e5e82920adc => 449
      0,1,ffffffff00000000,0,8f7d83bddee7bba8 => 449
      0,1,ffffffff00000000,0,780f2243ea071d06 => 449
      0,1,ffffffff00000000,0,eb915845f3de1634 => 449
      0,1,ffffffff00000000,0,d19e120d26b6f386 => 449
      0,1,ffffffff00000000,0,16ee53a7e5fecc6 => 449
      0,1,ffffffff00000000,0,cb5fd54e7933e477 => 449
      0,1,ffffffff00000000,0,acb8417879fd449f => 449
      0,1,ffffffff00000000,0,9c22190be7f74732 => 449
      0,1,ffffffff00000000,0,5d693c1ba3ba3621 => 449
      0,1,ffffffff00000000,0,3d639263da827b13 => 449
      0,1,ffffffff00000000,0,e273fd971bc8d0e7 => 449
      0,1,ffffffff00000000,0,418f02702d227ed5 => 449
      0,1,ffffffff00000000,0,8c25fda3b503038c => 449
      0,1,ffffffff00000000,0,2cbaed4daec8c07c => 449
      0,1,ffffffff00000000,0,5f58e6afcdd6ddc2 => 449
      0,1,ffffffff00000000,0,284650ac5e1b0eba => 449
      0,1,ffffffff00000000,0,635b337ee819dab5 => 449
      0,1,ffffffff00000000,0,9f9a036ed4f2d49f => 449
      0,1,ffffffff00000000,0,b93e260cae5c170e => 449
      0,1,ffffffff00000000,0,b0a7eae879ddb76d => 449
      0,1,ffffffff00000000,0,34c6efb812b04bf5 => 449
      0,1,ffffffff00000000,0,40bf0ab5fa14c112 => 449
      0,1,ffffffff00000000,0,b6b570fc7c5740d3 => 449
      0,1,ffffffff00000000,0,5a27b9002de33454 => 449
      0,1,ffffffff00000000,0,b1a5b165b6d2b2d2 => 449
      0,1,ffffffff00000000,0,8722e0ace9d1be22 => 449
      0,1,ffffffff00000000,0,788ee3b37e5680fb => 449
      0,1,ffffffff00000000,0,14a726661551e284 => 449
      0,1,ffffffff00000000,0,98b7672f9ef3b419 => 449
      0,1,ffffffff00000000,0,bb93ae776bb30e3a => 449
      0,1,ffffffff00000000,0,28fd3b046380f850 => 449
      0,1,ffffffff00000000,0,337dc00c61bd9ce1 => 449
      0,1,ffffffff00000000,0,d5eca244c7a4ff1d => 449
      0,1,ffffffff00000000,0,7762638264d279bd => 449
      0,1,ffffffff00000000,0,c1e434bedeefd767 => 449
      0,1,ffffffff00000000,0,299351a53b8ec22 => 449
      0,1,ffffffff00000000,0,b2d456e4ad251b80 => 449
      0,1,ffffffff00000000,0,3e9ed1fda49cea0b => 449
      0,1,ffffffff00000000,0,2972a92ba450bed8 => 449
      0,1,ffffffff00000000,0,20216dd77be493de => 449
      0,1,ffffffff00000000,0,adffe8cf28449ec6 => 449
      0,1,ffffffff00000000,0,1c4dbb1c4c27d243 => 449
      0,1,ffffffff00000000,0,388a128b7fd9a609 => 449
      0,1,ffffffff00000000,0,2300e5d6baedf0fb => 449
      0,1,ffffffff00000000,0,2f63aa8647e15104 => 449
      0,1,ffffffff00000000,0,f1c36ce86ecec269 => 449
      0,1,ffffffff00000000,0,27181125183970c9 => 449
      0,1,ffffffff00000000,0,e584029370dca96d => 449
      0,1,ffffffff00000000,0,4d9bbc3e02f1cfb2 => 449
      0,1,ffffffff00000000,0,ea35bc29692af6f8 => 449
      0,1,ffffffff00000000,0,18e21b4beabb4137 => 449
      0,1,ffffffff00000000,0,1e3b9fc625b554f4 => 449
      0,1,ffffffff00000000,0,25d64362697828fd => 449
      0,1,ffffffff00000000,0,db7f023869fb8d38 => 449
      0,1,ffffffff00000000,0,b462065911d4e1fc => 449
      0,1,ffffffff00000000,0,49c24ae4437d8030 => 449
      0,1,ffffffff00000000,0,d793862c112b0566 => 449
      0,1,ffffffff00000000,0,aadd1106730d8feb => 449
      0,1,ffffffff00000000,0,c43b6e0e97b0d568 => 449
      0,1,ffffffff00000000,0,e29024c18ee6fca2 => 449
      0,1,ffffffff00000000,0,5e50c27535b88c66 => 449
      0,1,ffffffff00000000,0,10383f20a4ff9a87 => 449
      0,1,ffffffff00000000,0,38e8ee9d71a45af8 => 449
      0,1,ffffffff00000000,0,dd5118375bf1a9b9 => 449
      0,1,ffffffff00000000,0,86ab99b4dde6c8b0 => 449
      0,1,ffffffff00000000,0,b1204f603f51c080 => 449
      0,1,ffffffff00000000,0,ef61ac8470250ecf => 449
      0,1,ffffffff00000000,0,1bbcd90f132c603f => 449
      0,1,ffffffff00000000,0,cd1dabd964db557 => 449
      0,1,ffffffff00000000,0,11a3ae5beb9d1ec9 => 449
      0,1,ffffffff00000000,0,f755bfeea585d11d => 449
      0,1,ffffffff00000000,0,a3b83250268ea4d7 => 449
      0,1,ffffffff00000000,0,516306f4927c93af => 449
      0,1,ffffffff00000000,0,ddb4ac49c9efa1da => 449
      0,1,ffffffff00000000,0,64bb6dec369d4418 => 449
      0,1,ffffffff00000000,0,8d37f755f4ae9f6 => 449
      0,1,ffffffff00000000,0,eec49b613478675b => 449
      0,1,ffffffff00000000,0,f143933aed25e0b0 => 449
      0,1,ffffffff00000000,0,e4c5dd8255dfc622 => 449
      0,1,ffffffff00000000,0,e7ad7756f193198e => 449
      0,1,ffffffff00000000,0,92c2318b87fff9cb => 449
      0,1,ffffffff00000000,0,739c25f8fd73596d => 449
      0,1,ffffffff00000000,0,5636cac9f16dfed0 => 449
      0,1,ffffffff00000000,0,dd8f909a938e0172 => 449
      0,1,ffffffff00000000,0,c6401fe115063f5b => 449
      0,1,ffffffff00000000,0,8ad97b33f1ac1455 => 449
      0,1,ffffffff00000000,0,784d3d2f1698309 => 449
      0,1,ffffffff00000000,0,530fb67ea1809a81 => 449
      0,1,ffffffff00000000,0,410492299bb01f49 => 449
      0,1,ffffffff00000000,0,139542347424b9ac => 449
      0,1,ffffffff00000000,0,9cb0bd5ea1a1115e => 449
      0,1,ffffffff00000000,0,2e3f615c38f49a1 => 449
      0,1,ffffffff00000000,0,985d4f4a9c5291ef => 449
      0,1,ffffffff00000000,0,775b9feafdcd26e7 => 449
      0,1,ffffffff00000000,0,304265a6384f0f2d => 449
      0,1,ffffffff00000000,0,593664c39773012c => 449
      0,1,ffffffff00000000,0,4f0a2e5fb028f2ce => 449
      0,1,ffffffff00000000,0,d8185f9adfea4fd0 => 449
      0,1,ffffffff00000000,0,ef87139ca9a3ab1e => 449
      0,1,ffffffff00000000,0,3ba71336c34ee133 => 449
      0,1,ffffffff00000000,0,7d3a455d56b70238 => 449
      0,1,ffffffff00000000,0,660d32e130182684 => 449
      0,1,ffffffff00000000,0,297a863f48cd1f43 => 449
      0,1,ffffffff00000000,0,90e0a736a751ebb7 => 449
      0,1,ffffffff00000000,0,549f80ce550c4fd3 => 449
      0,1,ffffffff00000000,0,f73b2922f38bd64 => 449
      0,1,ffffffff00000000,0,16bf1f73fb7a9c3f => 449
      0,1,ffffffff00000000,0,6d1f5a59005bec17 => 449
      0,1,ffffffff00000000,0,c5cb72a2a51159b0 => 449
      0,1,ffffffff00000000,0,8470f39d2d5c900e => 449
      0,1,ffffffff00000000,0,25abb3f1d39fcb76 => 449
      0,1,ffffffff00000000,0,23eb8cc9b372442f => 449
      0,1,ffffffff00000000,0,d687ba55c64f6364 => 449
      0,1,ffffffff00000000,0,da8d9e90fd8ff158 => 449
      0,1,ffffffff00000000,0,e3cbdc7d2fe45ea7 => 449
      0,1,ffffffff00000000,0,b9a8c9b3aee52297 => 449
      0,1,ffffffff00000000,0,c0d28a5c10960bd3 => 449
      0,1,ffffffff00000000,0,45d7ac9b68f71a34 => 449
      0,1,ffffffff00000000,0,eeb76e397069e804 => 449
      0,1,ffffffff00000000,0,9c9c98207cb10767 => 449
      0,1,ffffffff00000000,0,65700b51aedfb5ef => 449
      0,1,ffffffff00000000,0,911f451539869408 => 449
      0,1,ffffffff00000000,0,7ae6849fbc3a0ec6 => 449
      0,1,ffffffff00000000,0,3bb340eba06afe7e => 449
      0,1,ffffffff00000000,0,b46e9d8b682ea65e => 449
      0,1,ffffffff00000000,0,8dcf22f9a3b34356 => 449
      0,1,ffffffff00000000,0,77bdaeda586257a7 => 449
      0,1,ffffffff00000000,0,f19e400a5104d20d => 449
      0,1,ffffffff00000000,0,c368a348e46d950f => 449
      0,1,ffffffff00000000,0,9ef1cd60e679f284 => 449
      0,1,ffffffff00000000,0,5cd377dc8bb882a2 => 449
      0,1,ffffffff00000000,0,a7b0fb7883eee860 => 449
      0,1,ffffffff00000000,0,7684403ec392950d => 449
      0,1,ffffffff00000000,0,5fa3f06f4fed3b52 => 449
      0,1,ffffffff00000000,0,8df57ac11bc04831 => 449
      0,1,ffffffff00000000,0,2db01efa1e1e1897 => 449
      0,1,ffffffff00000000,0,54846de4aadb9ca2 => 449
      0,1,ffffffff00000000,0,ba6745385893c784 => 449
      0,1,ffffffff00000000,0,541d496344d2c75b => 449
      0,1,ffffffff00000000,0,e909678474e687fe => 449
      0,1,ffffffff00000000,0,dfe89923f6c9c2ff => 449
      0,1,ffffffff00000000,0,5ff98fd5d51fe610 => 449
      0,1,ffffffff00000000,0,83e8941918964615 => 449
      0,1,ffffffff00000000,0,5922040b47f150c1 => 449
      0,1,ffffffff00000000,0,f97d750e3dd94521 => 449
      0,1,ffffffff00000000,0,5080d4c2b86f56d7 => 449
      0,1,ffffffff00000000,0,a7de115b56c78d70 => 449
      0,1,ffffffff00000000,0,6a9242ac87538194 => 449
      0,1,ffffffff00000000,0,f7856ef7f9173e44 => 449
      0,1,ffffffff00000000,0,2265fc92feb0dc09 => 449
      0,1,ffffffff00000000,0,17dfc8e4f7ba8a57 => 449
      0,1,ffffffff00000000,0,9001a64209f21db8 => 449
      0,1,ffffffff00000000,0,b932b7cf752e5545 => 449
      0,1,ffffffff00000000,0,a0b1df81b6fe59fc => 449
      0,1,ffffffff00000000,0,8ef1dd26770af2c2 => 449
      0,1,ffffffff00000000,0,541a4f9cfbeed35 => 449
      0,1,ffffffff00000000,0,9e61106178bfc530 => 449
      0,1,ffffffff00000000,0,b3767e80935d8af2 => 449
      0,1,ffffffff00000000,0,98d5782065af06 => 449
      0,1,ffffffff00000000,0,31d191cd5c1466c7 => 449
      0,1,ffffffff00000000,0,410fefafa319ac9d => 449
      0,1,ffffffff00000000,0,bdf8f242e316c4ab => 449
      0,1,ffffffff00000000,0,9e8cd55b57637ed0 => 449
      0,1,ffffffff00000000,0,4d001fd58f002526 => 449
      0,1,ffffffff00000000,0,ca6637000eb4a9f8 => 449
      0,1,ffffffff00000000,0,2f2339d624f91f78 => 449
      0,1,ffffffff00000000,0,6d1a7918c80df518 => 449
      0,1,ffffffff00000000,0,df9a4939342308e9 => 449
      0,1,ffffffff00000000,0,ebc2151ee6c8398c => 449
      0,1,ffffffff00000000,0,3cc2ba8a1116515 => 449
      0,1,ffffffff00000000,0,d341d037e840cf83 => 449
      0,1,ffffffff00000000,0,387cb5d25af4afcc => 449
      0,1,ffffffff00000000,0,bba2515f22909e87 => 449
      0,1,ffffffff00000000,0,7248fe7705f38e47 => 449
      0,1,ffffffff00000000,0,262e963c8da05d3d => 449
      0,1,ffffffff00000000,0,59e89b094d220ec2 => 449
      0,1,ffffffff00000000,0,55d5b52b78b9c5e => 449
      0,1,ffffffff00000000,0,82b27eb33514ef99 => 449
      0,1,ffffffff00000000,0,d30094ca96b7ce7b => 449
      0,1,ffffffff00000000,0,cf5cb381cd0a1535 => 449
      0,1,ffffffff00000000,0,feed4db6919e5a7c => 449
      0,1,ffffffff00000000,0,41703f53753be59f => 449
      0,1,ffffffff00000000,0,5eeea940fcde8b6f => 449
      0,1,ffffffff00000000,0,4cd1f1b175100206 => 449
      0,1,ffffffff00000000,0,4a20358574454ec0 => 449
      0,1,ffffffff00000000,0,6f02dc07d141875c => 449
      0,1,ffffffff00000000,0,296a202ed8e556a2 => 449
      0,1,ffffffff00000000,0,2afd67999bf32ee5 => 449
      0,1,ffffffff00000000,0,7acfd96efa95491d => 449
      0,1,ffffffff00000000,0,6798ba0c0abb2c6d => 449
      0,1,ffffffff00000000,0,34c6f57b26c92122 => 449
      0,1,ffffffff00000000,0,5736e1bad206b5de => 449
      0,1,ffffffff00000000,0,20057d2a0056521b => 449
      0,1,ffffffff00000000,0,3dea5bd5d0578bd7 => 449
      0,1,ffffffff00000000,0,16e50d897d4634ac => 449
      0,1,ffffffff00000000,0,29bff3ecb9b7a6e3 => 449
      0,1,1000000000000,ffffffff00000000,0 => 294
      0,1,fffeffff00000001,ffffffff00000000,0 => 294
      1,0,ffffffff00000000,0,0 => 194
      0,ffffffff00000000,ffffffff00000000,0,0 => 132
      0,1,fffffffeff000001,ffffffff00000000,0 => 96
      0,1,1000000,ffffffff00000000,0 => 96
      0,1,fffffeff00000101,ffffffff00000000,0 => 96
      0,1,ffffffff00,ffffffff00000000,0 => 96
      0,ffffffff00000000,ffffffff00000000,1,0 => 88
      0,ffffffff00000000,efffffff10000001,efffffff10000001,0 => 48
      0,ffffffff00000000,efffffff10000001,ffffffff0000000,0 => 48
      0,ffffffff00000000,efffffff10000001,feffffff00000001,0 => 48
      0,ffffffff00000000,efffffff10000001,100000000000000,0 => 48
      0,ffffffff00000000,efffffff10000001,fffffffefff00001,0 => 48
      0,ffffffff00000000,efffffff10000001,100000,0 => 48
      0,ffffffff00000000,efffffff10000001,ffffffff0000,0 => 48
      0,ffffffff00000000,efffffff10000001,fffeffff00010001,0 => 48
      0,ffffffff00000000,efffffff10000001,100000000000,0 => 48
      0,ffffffff00000000,efffffff10000001,ffffefff00000001,0 => 48
      0,ffffffff00000000,efffffff10000001,100,0 => 48
      0,ffffffff00000000,efffffff10000001,fffffffeffffff01,0 => 48
      0,ffffffff00000000,efffffff10000001,ffffffef00000011,0 => 48
      0,ffffffff00000000,efffffff10000001,ffffffff0,0 => 48
      0,ffffffff00000000,efffffff10000001,fffffffe00000001,0 => 48
      0,ffffffff00000000,efffffff10000001,100000000,0 => 48
      0,ffffffff00000000,1,ffffffff00000000,0 => 27
      200000000000001,0,ffffffff00000000,1,0 => 16
      40001,0,ffffffff00000000,1,0 => 16
      0,ffffffff00000000,0,0,1 => 16
      0,6270d5277401268f,ffffffff00000000,0,0 => 16
      c465162d27278a79,0,ffffffff00000000,1,0 => 8
      c21e639730b6958e,0,ffffffff00000000,1,0 => 8
      e29d1cef5b5b1152,0,ffffffff00000000,1,0 => 8
      ffffffffffff1,0,ffffffff00000000,1,0 => 8
      6270d52774012690,0,ffffffff00000000,1,0 => 8
      e6fa2fd4a3bee0b4,0,ffffffff00000000,1,0 => 8
      4086ebc219f3569c,0,ffffffff00000000,1,0 => 8
      7fff7fff8000001,0,ffffffff00000000,1,0 => 8
      ffffff7f00000002,0,ffffffff00000000,1,0 => 8
      ffffbfff00004002,0,ffffffff00000000,1,0 => 8
      1000000000000001,0,ffffffff00000000,1,0 => 8
      1000001,0,ffffffff00000000,1,0 => 8
      fffeffff00000002,0,ffffffff00000000,1,0 => 8
      2,0,ffffffff00000000,1,0 => 8
      0,ffffffff00000000,0,0,70088f165d151802 => 8
      0,ffffffff00000000,0,0,551136b191446c3d => 8
      0,ffffffff00000000,0,0,de288a3c6592ec51 => 8
      0,ffffffff00000000,0,0,27bb7c3dbd05d4b3 => 8
      0,ce2d24dacdd9a6a3,ffffffff00000000,0,4e5e0a72a1f58d10 => 8
      0,ecab727d25ca7a5d,ffffffff00000000,0,1c909840d79503bc => 8
      0,36058c86abf76f6d,ffffffff00000000,0,31 => 8
      0,6270d5277401268f,1,ffffffff00000000,0 => 8
      0,1,2,1,0 => 4
      0,4,8,1,0 => 4
      0,10,20,1,0 => 4
      0,40,80,1,0 => 4
      0,100,200,1,0 => 4
      0,400,800,1,0 => 4
      0,1000,2000,1,0 => 4
      0,4000,8000,1,0 => 4
      0,10000,20000,1,0 => 4
      0,40000,80000,1,0 => 4
      0,100000,200000,1,0 => 4
      0,400000,800000,1,0 => 4
      0,1,1,1,0 => 4
      0,ffffffff00000000,dfffffff20000001,dfffffff20000001,0 => 3
      0,ffffffff00000000,dfffffff20000001,1fffffffe0000000,0 => 3
      0,ffffffff00000000,dfffffff20000001,fffffffeffe00001,0 => 3
      0,ffffffff00000000,dfffffff20000001,200000,0 => 3
      0,ffffffff00000000,dfffffff20000001,200000000000,0 => 3
      0,ffffffff00000000,dfffffff20000001,ffffdfff00000001,0 => 3
      0,ffffffff00000000,dfffffff20000001,ffffffdf00000021,0 => 3
      0,ffffffff00000000,dfffffff20000001,1fffffffe0,0 => 3
      0,1000000,2000000,1,0 => 3
      0,4000000,8000000,1,0 => 3
      0,10000000,20000000,1,0 => 3
      0,40000000,80000000,1,0 => 3
      0,fffffffeffffffff,fffffffeffffffff,1,0 => 2
      2,0,0,ffffffff00000000,0 => 2
      0,fffffffefffffffd,fffffffefffffffd,1,0 => 2
      4,0,0,ffffffff00000000,0 => 2
      0,fffffffefffffff9,fffffffefffffff9,1,0 => 2
      8,0,0,ffffffff00000000,0 => 2
      0,fffffffefffffff1,fffffffefffffff1,1,0 => 2
      10,0,0,ffffffff00000000,0 => 2
      0,fffffffeffffffe1,fffffffeffffffe1,1,0 => 2
      20,0,0,ffffffff00000000,0 => 2
      0,fffffffeffffffc1,fffffffeffffffc1,1,0 => 2
      40,0,0,ffffffff00000000,0 => 2
      0,fffffffeffffff81,fffffffeffffff81,1,0 => 2
      80,0,0,ffffffff00000000,0 => 2
      0,fffffffeffffff01,fffffffeffffff01,1,0 => 2
      100,0,0,ffffffff00000000,0 => 2
      0,fffffffefffffe01,fffffffefffffe01,1,0 => 2
      200,0,0,ffffffff00000000,0 => 2
      0,fffffffefffffc01,fffffffefffffc01,1,0 => 2
      400,0,0,ffffffff00000000,0 => 2
      0,fffffffefffff801,fffffffefffff801,1,0 => 2
      800,0,0,ffffffff00000000,0 => 2
      0,fffffffefffff001,fffffffefffff001,1,0 => 2
      1000,0,0,ffffffff00000000,0 => 2
      0,fffffffeffffe001,fffffffeffffe001,1,0 => 2
      2000,0,0,ffffffff00000000,0 => 2
      0,fffffffeffffc001,fffffffeffffc001,1,0 => 2
      4000,0,0,ffffffff00000000,0 => 2
      0,fffffffeffff8001,fffffffeffff8001,1,0 => 2
      8000,0,0,ffffffff00000000,0 => 2
      fffffffeffff0001,0,0,1,10000 => 2
      fffffffefffe0001,0,0,1,20000 => 2
      fffffffefffc0001,0,0,1,40000 => 2
      fffffffefff80001,0,0,1,80000 => 2
      fffffffefff00001,0,0,1,100000 => 2
      fffffffeffe00001,0,0,1,200000 => 2
      fffffffeffc00001,0,0,1,400000 => 2
      fffffffeff800001,0,0,1,800000 => 2
      fffffffeff000001,0,0,1,1000000 => 2
      fffffffefe000001,0,0,1,2000000 => 2
      fffffffefc000001,0,0,1,4000000 => 2
      fffffffef8000001,0,0,1,8000000 => 2
      fffffffef0000001,0,0,1,10000000 => 2
      fffffffee0000001,0,0,1,20000000 => 2
      fffffffec0000001,0,0,1,40000000 => 2
      fffffffe80000001,0,0,1,80000000 => 2
      0,1,ffffffff00000000,0,ffffffff => 2
      0,100000000,ffffffff00000000,1,0 => 2
      0,8000000000000000,ffffffff00000000,1,0 => 2
      0,ffffffff00000000,ffffffff00000000,0,1 => 2
      0,100000000,200000000,1,0 => 1
      0,400000000,800000000,1,0 => 1
      0,1000000000,2000000000,1,0 => 1
      0,4000000000,8000000000,1,0 => 1
      0,10000000000,20000000000,1,0 => 1
      0,40000000000,80000000000,1,0 => 1
      0,100000000000,200000000000,1,0 => 1
      0,400000000000,800000000000,1,0 => 1
      0,1000000000000,2000000000000,1,0 => 1
      0,4000000000000,8000000000000,1,0 => 1
      0,10000000000000,20000000000000,1,0 => 1
      0,40000000000000,80000000000000,1,0 => 1
      0,100000000000000,200000000000000,1,0 => 1
      0,400000000000000,800000000000000,1,0 => 1
      0,1000000000000000,2000000000000000,1,0 => 1
      0,4000000000000000,ffffffff00000000,1,0 => 1
      0,1000000,ffffffff00000000,1,0 => 1
      0,2000000,4000000,1,0 => 1
      0,8000000,10000000,1,0 => 1
      0,20000000,40000000,1,0 => 1
      0,80000000,100000000,1,0 => 1
      0,200000000,400000000,1,0 => 1
      0,800000000,1000000000,1,0 => 1
      0,2000000000,4000000000,1,0 => 1
      0,8000000000,10000000000,1,0 => 1
      0,20000000000,40000000000,1,0 => 1
      0,80000000000,100000000000,1,0 => 1
      0,200000000000,400000000000,1,0 => 1
      0,800000000000,1000000000000,1,0 => 1
      0,2000000000000,4000000000000,1,0 => 1
      0,8000000000000,10000000000000,1,0 => 1
      0,20000000000000,40000000000000,1,0 => 1
      0,80000000000000,100000000000000,1,0 => 1
      0,200000000000000,400000000000000,1,0 => 1
      0,800000000000000,1000000000000000,1,0 => 1
      0,2000000000000000,4000000000000000,1,0 => 1
      0,ffffffff00000000,1,0,ffffffff00000000 => 1
      nConstraints: 331913
      PLONK nConstraints: 339443
      plonkAdditions: 7530
      Processing constraint... 0/339443
      Processing constraint... 10000/339443
      Processing constraint... 20000/339443
      Processing constraint... 30000/339443
      Processing constraint... 40000/339443
      Processing constraint... 50000/339443
      Processing constraint... 60000/339443
      Processing constraint... 70000/339443
      Processing constraint... 80000/339443
      Processing constraint... 90000/339443
      Processing constraint... 100000/339443
      Processing constraint... 110000/339443
      Processing constraint... 120000/339443
      Processing constraint... 130000/339443
      Processing constraint... 140000/339443
      Processing constraint... 150000/339443
      Processing constraint... 160000/339443
      Processing constraint... 170000/339443
      Processing constraint... 180000/339443
      Processing constraint... 190000/339443
      Processing constraint... 200000/339443
      Processing constraint... 210000/339443
      Processing constraint... 220000/339443
      Processing constraint... 230000/339443
      Processing constraint... 240000/339443
      Processing constraint... 250000/339443
      Processing constraint... 260000/339443
      Processing constraint... 270000/339443
      Processing constraint... 280000/339443
      Processing constraint... 290000/339443
      Processing constraint... 300000/339443
      Processing constraint... 310000/339443
      Processing constraint... 320000/339443
      Processing constraint... 330000/339443
      Processing custom gates... 0/13845
      Processing custom gates... 10000/13845
      Preparing S... 0/131072
      Preparing S... 10000/131072
      Preparing S... 20000/131072
      Preparing S... 30000/131072
      Preparing S... 40000/131072
      Preparing S... 50000/131072
      Preparing S... 60000/131072
      Preparing S... 70000/131072
      Preparing S... 80000/131072
      Preparing S... 90000/131072
      Preparing S... 100000/131072
      Preparing S... 110000/131072
      Preparing S... 120000/131072
      Preparing S... 130000/131072
      Connection S... 0/112596
      Connection S... 10000/112596
      Connection S... 20000/112596
      Connection S... 30000/112596
      Connection S... 40000/112596
      Connection S... 50000/112596
      Connection S... 60000/112596
      Connection S... 70000/112596
      Connection S... 80000/112596
      Connection S... 90000/112596
      Connection S... 100000/112596
      Connection S... 110000/112596
      files Generated Correctly
      
    • 11)debug运行fibonacci C12 genStarkinfo:运行main_genstarkinfo.js,输入为fibonacci.c12.pil和状态机内的fibonacci.c12.starkstruct.json,输出为fibonacci.c12.starkinfo.json

      /usr/local/bin/node --max-old-space-size=32000 ./src/main_genstarkinfo.js -p tmp/fibonacci.c12.pil -s /Users/lanyu/zyd/0xPolygonHermez/pil-stark/test/sm_fibonacci/fibonacci.c12.starkstruct.json -i tmp/fibonacci.c12.starkinfo.json
      files Generated Correctly
      
    • 12)debug运行fibonacci C12 exec

      /usr/local/bin/node --max-old-space-size=32000 src/compressor12/main_compressor12_exec.js -i /Users/lanyu/zyd/0xPolygonHermez/pil-stark/tmp/fibonacci.proof.zkin.json -w /Users/lanyu/zyd/0xPolygonHermez/pil-stark/tmp/fibonacci.verifier_js/fibonacci.verifier.wasm -p /Users/lanyu/zyd/0xPolygonHermez/pil-stark/tmp/fibonacci.c12.pil -e /Users/lanyu/zyd/0xPolygonHermez/pil-stark/tmp/fibonacci.c12.exec -m /Users/lanyu/zyd/0xPolygonHermez/pil-stark/tmp/fibonacci.c12.commit
      WebAssembly.instantiate(): Import #1 module="runtime" function="printErrorMessage" error: function import requires a callable
      LinkError: WebAssembly.instantiate(): Import #1 module="runtime" function="printErrorMessage" error: function import requires a callable
          at builder (/Users/lanyu/zyd/0xPolygonHermez/pil-stark/node_modules/circom_runtime/build/main.cjs:100:40)
          at async run (/Users/lanyu/zyd/0xPolygonHermez/pil-stark/src/compressor12/main_compressor12_exec.js:46:16)
      Process exited with code 1
      

      解决方案为:在WebAssembly.instantiate()的runtime模块中添加printErrorMessage和writeBufferMessage伪函数实现:【不推荐,等待官方更新】

      const instance = await WebAssembly.instantiate(wasmModule, {
          env: {
              "memory": memory
          },
          runtime: {
              exceptionHandler: function(code) {
                  let errStr;
                  if (code == 1) {
                      errStr = "Signal not found. ";
                  } else if (code == 2) {
                      errStr = "Too many signals set. ";
                  } else if (code == 3) {
                      errStr = "Signal already set. ";
                  } else if (code == 4) {
                      errStr = "Assert Failed. ";
                  } else if (code == 5) {
                      errStr = "Not enough memory. ";
                  } else if (code == 6) {
                      errStr = "Input signal array access exceeds the size";
                  } else {
                      errStr = "Unknown error.";
                  }
                  console.log("ERROR: ", code, errStr);
                  throw new Error(errStr);
              },
              showSharedRWMemory: function() {
                  const shared_rw_memory_size = instance.exports.getFieldNumLen32();
                  const arr = new Uint32Array(shared_rw_memory_size);
                  for (let j=0; j            
关注
打赏
1664532908
查看更多评论
0.0578s