Home | History | Annotate | Download | only in octane
      1 // Portions copyright 2012 Google, Inc.
      2 // Portions copyright 2011 Mozilla Foundation. All rights reserved.
      3 
      4 // This program is free software; you can redistribute it and/or modify
      5 // it under the terms of the GNU General Public License as published by
      6 // the Free Software Foundation; either version 2 of the License, or
      7 // (at your option) any later version.
      8 //
      9 // This program is distributed in the hope that it will be useful,
     10 // but WITHOUT ANY WARRANTY; without even the implied warranty of
     11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     12 // GNU General Public License for more details.
     13 //
     14 // You should have received a copy of the GNU General Public License
     15 // along with this program; if not, write to the Free Software
     16 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
     17 
     18 // The PDF-JS code in this file has been written by Mozilla.
     19 // It is available in its latest version from:
     20 //
     21 //   https://github.com/mozilla/pdf.js
     22 
     23 
     24 //////// Benchmark set-up. (c) by Google. ////////
     25 
     26 var pdf_file = "test.pdf";
     27 var canvas_logs = [];
     28 
     29 var PdfJS = new BenchmarkSuite("PdfJS", 9000000, [
     30   new Benchmark("PdfJS", runPdfJS, setupPdfJS, tearDownPdfJS, 4)
     31 ]);
     32 
     33 function setupPdfJS() {
     34   // Check for Typed Arrays support, throw error if not.
     35   if (!(typeof Uint8Array != "undefined" &&
     36     typeof Float64Array != "undefined" &&
     37     typeof (new Uint8Array(0)).subarray != "undefined")) {
     38       throw "TypedArrayUnsupported";
     39     }
     40 
     41   PdfJS_window.__resources__[pdf_file] = buffer(PdfJS_window.atob(getPDF()));
     42 }
     43 
     44 function runPdfJS() {
     45   PDFJS.getDocument(pdf_file).then(function(pdf) {
     46     var canvas = PdfJS_window.document.getElementById('canvas');
     47     var context = canvas.getContext('2d');
     48     var renderContext = {canvasContext: context};
     49     canvas_logs.push(context.__log__);
     50 
     51     // Cycle through all pages.
     52     function renderPages(i, j) {
     53       if (i > j) return;
     54       context.clearRect(0, 0, canvas.width, canvas.height);
     55       pdf.getPage(i).then(function(page) {
     56         renderContext.viewport = page.getViewport(1);
     57         canvas.height = renderContext.viewport.height;
     58         canvas.width = renderContext.viewport.width;
     59         page.render(renderContext).then(renderPages.bind(null, i + 1, j));
     60       });
     61     }
     62     renderPages(1, pdf.numPages);
     63   });
     64 
     65   // Wait for everything to complete.
     66   PdfJS_window.flushTimeouts();
     67 }
     68 
     69 function tearDownPdfJS() {
     70   // Should produce 36788 939524096 for all runs.
     71   for (var i = 0; i < canvas_logs.length; ++i) {
     72     var log_length = canvas_logs[i].length;
     73     var log_hash = hash(canvas_logs[i].join(" "));
     74     var expected_length = 36788;
     75     var expected_hash = 939524096;
     76     if (log_length !== expected_length || log_hash !== expected_hash) {
     77       var message = "PdfJS produced incorrect output: " +
     78           "expected " + expected_length + " " + expected_hash + ", " +
     79           "got " + log_length + " " + log_hash;
     80       console.log(message + "\n");
     81       throw message;
     82     }
     83   }
     84   // Allow GC of global state.
     85   delete this.PDFJS;
     86   delete this.PdfJS_window;
     87 }
     88 
     89 function buffer(s) {
     90   var b = new ArrayBuffer(s.length);
     91   var a = new Uint8Array(b);
     92   for (var i = 0; i < s.length; ++i) a[i] = s.charCodeAt(i);
     93   return b;
     94 }
     95 
     96 function hash(s) {
     97   var up = Math.floor((s.length + 3) / 4);
     98   var h = 0;
     99   for (var i = 0; 4*i - 3 < s.length; i += 4) {
    100     for (var j = 0; j < 4 && i + j < s.length; ++j)
    101       h = (h + s.charCodeAt(i + j) << (8*j)) | 0;
    102   }
    103   return h;
    104 }
    105 
    106 
    107 ///////// Mocks of relevant browser functionality. (c) by Google. ////////
    108 
    109 // Every acces to window will be redirected to PdfJS_window.
    110 var PdfJS_window = Object.create(this);
    111 
    112 function PdfJS_windowInstall(name, x) {
    113   Object.defineProperty(PdfJS_window, name, {value: x});
    114 }
    115 
    116 PdfJS_windowInstall("setTimeout", function(cmd, delay) {
    117   PdfJS_window.__timeouts__.push(cmd);
    118 });
    119 
    120 PdfJS_windowInstall("flushTimeouts", function() {
    121   while (PdfJS_window.__timeouts__.length != 0) {
    122     var next = PdfJS_window.__timeouts__.pop();
    123     if (typeof next === "function")
    124       next({data: "{}"});
    125     else
    126       eval(next);
    127   }
    128 });
    129 
    130 PdfJS_windowInstall("window", PdfJS_window);
    131 
    132 PdfJS_window.__timeouts__ = [];
    133 PdfJS_window.__resources__ = {};
    134 
    135 
    136 // Base64 encoding/decoding is based on code by Grant Galitz.
    137 PdfJS_window.__to64__ = [
    138   "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M",
    139   "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z",
    140   "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m",
    141   "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z",
    142   "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "+", "/", "="
    143 ];
    144 
    145 PdfJS_windowInstall("btoa", function(data) {
    146   var result = "";
    147   if (data.length > 0) {
    148     var i = 0;
    149     while (i < data.length) {
    150       var b1 = data.charCodeAt(i++) & 0xff;
    151       var b2 = data.charCodeAt(i++ < data.length ? i-1 : 0) & 0xff;
    152       var b3 = data.charCodeAt(i++ < data.length ? i-1 : 0) & 0xff;
    153       result += PdfJS_window.__to64__[b1 >> 2];
    154       if (i === data.length + 2) {
    155         result += PdfJS_window.__to64__[(b1 & 0x3) << 4] + "==";
    156       } else {
    157         result += PdfJS_window.__to64__[((b1 & 0x3) << 4) | (b2 >> 4)];
    158         if (i === data.length + 1) {
    159           result += PdfJS_window.__to64__[(b2 & 0xF) << 2] + "=";
    160         } else {
    161           result += PdfJS_window.__to64__[((b2 & 0xF) << 2) | (b3 >> 6)] +
    162 	      PdfJS_window.__to64__[b3 & 0x3F];
    163         }
    164       }
    165     }
    166   }
    167   return result;
    168 });
    169 
    170 PdfJS_window.__from64__ =
    171   "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
    172 
    173 PdfJS_windowInstall("atob", function(data) {
    174   var result = "";
    175   var i = 0;
    176   while (i < data.length) {
    177     var x1 = PdfJS_window.__from64__.indexOf(data.charAt(i++));
    178     var x2 = PdfJS_window.__from64__.indexOf(data.charAt(i++));
    179     var x3 = PdfJS_window.__from64__.indexOf(data.charAt(i++));
    180     var x4 = PdfJS_window.__from64__.indexOf(data.charAt(i++));
    181     result += String.fromCharCode((x1 << 2) | (x2 >> 4));
    182     if (x3 != 0x40) {
    183        result += String.fromCharCode(((x2 & 0x0F) << 4) | (x3 >> 2));
    184        if (x4 != 0x40) {
    185          result += String.fromCharCode(((x3 & 0x03) << 6) | x4);
    186       }
    187     }
    188   }
    189   return result;
    190 });
    191 
    192 
    193 PdfJS_windowInstall("XMLHttpRequest", function() {
    194   this.open = function(type, url, some_bool) {
    195     this.url = url;
    196   }
    197   this.overrideMimeType = function() {}
    198   this.send = function() {
    199     this.response = PdfJS_window.__resources__[this.url];
    200     this.readyState = 4;
    201     this.status = 0;
    202     this.onreadystatechange();
    203   }
    204 });
    205 
    206 PdfJS_windowInstall("console", this.console ? this.console : {
    207   log: function(s) {
    208     // To verify that the test produces the right results,
    209     // uncomment this code.
    210     /*
    211     var re = new RegExp("%d", "g");
    212     var args = arguments;
    213     var i = 0;
    214     print(s.replace(re, function() { return args[++i] }));
    215     */
    216   }
    217 });
    218 
    219 PdfJS_windowInstall("location", {
    220   protocol: ""
    221 });
    222 
    223 PdfJS_windowInstall("Event", function() {
    224   this.initEvent = function(name) {
    225     this.name = name;
    226   }
    227 });
    228 
    229 PdfJS_windowInstall("Element", function(type) {
    230   this.__listeners__ = {};
    231   this.element_type = type;
    232   this.insertBefore = function() {};
    233   this.addEventListener = function(name, listener) {
    234     this.__listeners__[name] = listener;
    235   };
    236   this.removeEventListener = function(name) {
    237     delete this.__listeners__[name];
    238   };
    239   this.dispatchEvent = function(event) {
    240     this.__listeners__[event.name](event)
    241   };
    242   this.getElementsByTagName = function(name) {
    243     if (name === "head") {
    244       return [{appendChild: function() {}}]
    245     }
    246   };
    247   this.appendChild = function() {};
    248   this.setAttribute = function() {};
    249   this.sheet = {
    250     cssRules: [],
    251     insertRule: function() {}
    252   };
    253 });
    254 
    255 PdfJS_windowInstall("Context", function() {
    256   this.__log__ = [];
    257   this.save = function() {
    258     this.__log__.push("save","\n");
    259   }
    260   this.restore = function() {
    261     this.__log__.push("restore","\n");
    262   }
    263   this.transform = function(a,b,c,d,e,f) {
    264     this.__log__.push("transform",a,b,c,d,e,f,"\n");
    265   }
    266   this.translate = function(x,y) {
    267     this.__log__.push("translate",x,y,"\n");
    268   }
    269   this.scale = function(x,y) {
    270     this.__log__.push("scale",x,y,"\n");
    271   }
    272   this.rect = function(x,y,w,h) {
    273     this.__log__.push("rect",x,y,w,h,"\n");
    274   }
    275   this.clip = function() {
    276     this.__log__.push("clip","\n");
    277   }
    278   this.fill = function() {
    279     this.__log__.push("fill","\n");
    280   }
    281   this.stroke = function() {
    282     this.__log__.push("stroke","\n");
    283   }
    284   this.beginPath = function() {
    285     this.__log__.push("beginPath","\n");
    286   }
    287   this.closePath = function() {
    288     this.__log__.push("closePath","\n");
    289   }
    290   this.moveTo = function(x,y) {
    291     this.__log__.push("moveTo",x,y,"\n");
    292   }
    293   this.lineTo = function(x,y) {
    294     this.__log__.push("lineTo",x,y,"\n");
    295   }
    296   this.fillRect = function(x,y,w,h) {
    297     this.__log__.push("fillRect",x,y,w,h,"\n");
    298   }
    299   this.fillText = function(s,x,y,w) {
    300     this.__log__.push("fillText",s,x,y,"\n");
    301   }
    302   this.strokeText = function(s,x,y,w) {
    303     this.__log__.push("strokeText",s,x,y,"\n");
    304   }
    305   this.getImageData = function(x,y,w,h) {
    306     this.__log__.push("getImageData",x,y,w,h,"\n");
    307     return {data: []};
    308   }
    309   this.putImageData = function(data,x,y) {
    310     this.__log__.push("putImageData","{...}",x,y,"\n");
    311   }
    312   this.drawImage = function(image,x,y) {
    313     this.__log__.push("drawImage","<elem>",x,y,"\n");
    314   }
    315   this.getParameter = function(name) {
    316     this.__log__.push("getParameter",name,"\n");
    317     return null;
    318   }
    319   this.enable = function() {
    320     this.__log__.push("enable","\n");
    321   }
    322   this.disable = function() {
    323     this.__log__.push("disable","\n");
    324   }
    325   this.depthFunc = function(param) {
    326     this.__log__.push("depthFunc",param,"\n");
    327   }
    328   this.clearColor = function(r,g,b,a) {
    329     this.__log__.push("clearColor",r,g,b,a,"\n");
    330   }
    331   this.clear = function(m) {
    332     this.__log__.push("clear",m,"\n");
    333   }
    334   this.clearRect = function(x,y,w,h) {
    335     this.__log__.push("createRect",x,y,w,h,"\n");
    336   }
    337 });
    338 
    339 PdfJS_windowInstall("Canvas", function() {
    340   this.getContext = function() {
    341     return new PdfJS_window.Context();
    342   }
    343   this.width = 100;
    344   this.height = 100;
    345   this.style = { visibility: "visibile" };
    346 });
    347 
    348 PdfJS_windowInstall("document", {
    349   body : new PdfJS_window.Element("body"),
    350   documentElement : new PdfJS_window.Element("document"),
    351   createElement : function(element_type) {
    352     var element;
    353     if (element_type === "canvas") {
    354       element = new PdfJS_window.Canvas();
    355     } else {
    356       element = new PdfJS_window.Element(element_type);
    357     }
    358     element.parentNode = new PdfJS_window.Element("dummy_parent");
    359     return element;
    360   },
    361   getElementById : function(name) {
    362     if (name === "canvas") {
    363       return new PdfJS_window.Canvas();
    364     } else {
    365       return undefined;
    366     }
    367   },
    368   getElementsByTagName : function(element) {
    369     if (element === "script") {
    370       return new Array(new this.createElement(element));
    371     }
    372   },
    373   createEvent : function() { return new PdfJS_window.Event() }
    374 });
    375 
    376 PdfJS_window.window.addEventListener = function(name, listener) {
    377   PdfJS_window.setTimeout(listener)
    378 }
    379 
    380 PdfJS_windowInstall("Worker", undefined);
    381 
    382 
    383 ///////// The PDF we want to render, encoded in base64. ////////
    384 
    385 function getPDF() {
    386   return "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NyAzOTkuNyA1MTMuOSA3OTkuNCAyODUuNSAzNDIuNiAyODUuNSA1MTMuOSA1MTMuOSA1MTMuOSA1MTMuOSA1MTMuOSA1MTMuOSA1MTMuOSA1MTMuOSA1MTMuOSA1MTMuOSA1MTMuOSAyODUuNSAyODUuNSAyODUuNSA3OTkuNCA0ODUuMyA0ODUuMyA3OTkuNCA3NzAuNyA3MjcuOSA3NDIuMyA3ODUgNjk5LjQgNjcwLjggODA2LjUgNzcwLjcgMzcxIDUyOC4xIDc5OS4yIDY0Mi4zIDk0MiA3NzAuNyA3OTkuNCA2OTkuNCA3OTkuNCA3NTYuNSA1NzEgNzQyLjMgNzcwLjcgNzcwLjcgMTA1Ni4yIDc3MC43IDc3MC43IDYyOC4xIDI4NS41IDUxMy45IDI4NS41IDUxMy45IDI4NS41IDI4NS41IDUxMy45IDU3MSA0NTYuOCA1NzEgNDU3LjIgMzE0IDUxMy45IDU3MSAyODUuNSAzMTQgNTQyLjQgMjg1LjUgODU2LjUgNTcxIDUxMy45IDU3MSA1NDIuNCA0MDIgNDA1LjQgMzk5LjcgNTcxIDU0Mi40IDc0Mi4zIDU0Mi40IDU0Mi40XQplbmRvYmoKMTYgMCBvYmoKWzYzOC45XQplbmRvYmoKMTcgMCBvYmoKWzU2Mi41IDU2Mi41IDU2Mi41IDU2Mi41IDU2Mi41IDU2Mi41IDU2Mi41IDU2Mi41IDU2Mi41IDMxMi41IDMxMi41IDM0Mi42IDg3NSA1MzEuMiA1MzEuMiA4NzUgODQ5LjUgNzk5LjggODEyLjUgODYyLjMgNzM4LjQgNzA3LjIgODg0LjMgODc5LjYgNDE5IDU4MSA4ODAuOCA2NzUuOSAxMDY3LjEgODc5LjYgODQ0LjkgNzY4LjUgODQ0LjkgODM5LjEgNjI1IDc4Mi40IDg2NC42IDg0OS41IDExNjIgODQ5LjUgODQ5LjUgNjg3LjUgMzEyLjUgNTgxIDMxMi41IDU2Mi41IDMxMi41IDMxMi41IDU0Ni45IDYyNSA1MDAgNjI1IDUxMy4zIDM0My43IDU2Mi41IDYyNSAzMTIuNSAzNDMuNyA1OTMuNyAzMTIuNSA5MzcuNSA2MjUgNTYyLjUgNjI1IDU5My43IDQ1OS41IDQ0My44IDQzNy41IDYyNV0KZW5kb2JqCjE4IDAgb2JqCls1ODMuMyA1NTUuNiA1NTUuNiA4MzMuMyA4MzMuMyAyNzcuOCAzMDUuNiA1MDAgNTAwIDUwMCA1MDAgNTAwIDc1MCA0NDQuNCA1MDAgNzIyLjIgNzc3LjggNTAwIDkwMi44IDEwMTMuOSA3NzcuOCAyNzcuOCAyNzcuOCA1MDAgODMzLjMgNTAwIDgzMy4zIDc3Ny44IDI3Ny44IDM4OC45IDM4OC45IDUwMCA3NzcuOCAyNzcuOCAzMzMuMyAyNzcuOCA1MDAgNTAwIDUwMCA1MDAgNTAwIDUwMCA1MDAgNTAwIDUwMCA1MDAgNTAwIDI3Ny44IDI3Ny44IDI3Ny44IDc3Ny44IDQ3Mi4yIDQ3Mi4yIDc3Ny44IDc1MCA3MDguMyA3MjIuMiA3NjMuOSA2ODAuNiA2NTIuOCA3ODQuNyA3NTAgMzYxLjEgNTEzLjkgNzc3LjggNjI1IDkxNi43IDc1MCA3NzcuOCA2ODAuNiA3NzcuOCA3MzYuMSA1NTUuNiA3MjIuMiA3NTAgNzUwIDEwMjcuOCA3NTAgNzUwIDYxMS4xIDI3Ny44IDUwMCAyNzcuOCA1MDAgMjc3LjggMjc3LjggNTAwIDU1NS42IDQ0NC40IDU1NS42IDQ0NC40IDMwNS42IDUwMCA1NTUuNiAyNzcuOCAzMDUuNiA1MjcuOCAyNzcuOCA4MzMuMyA1NTUuNiA1MDAgNTU1LjYgNTI3LjggMzkxLjcgMzk0LjQgMzg4LjkgNTU1LjYgNTI3LjggNzIyLjIgNTI3LjggNTI3LjggNDQ0LjRdCmVuZG9iagoxOSAwIG9iagpbODY5LjQgODE4LjEgODMwLjYgODgxLjkgNzU1LjYgNzIzLjYgOTA0LjIgOTAwIDQzNi4xIDU5NC40IDkwMS40IDY5MS43IDEwOTEuNyA5MDAgODYzLjkgNzg2LjEgODYzLjkgODYyLjUgNjM4LjkgODAwIDg4NC43IDg2OS40IDExODguOSA4NjkuNCA4NjkuNCA3MDIuOCAzMTkuNCA2MDIuOCAzMTkuNCA1NzUgMzE5LjQgMzE5LjQgNTU5IDYzOC45IDUxMS4xIDYzOC45IDUyNy4xIDM1MS40IDU3NSA2MzguOSAzMTkuNCAzNTEuNCA2MDYuOSAzMTkuNCA5NTguMyA2MzguOSA1NzUgNjM4LjkgNjA2LjkgNDczLjYgNDUzLjYgNDQ3LjJdCmVuZG9iagoyMCAwIG9iagpbMjcyIDMyNi40IDI3MiA0ODkuNiA0ODkuNiA0ODkuNiA0ODkuNiA0ODkuNiA0ODkuNiA0ODkuNiA0ODkuNiA0ODkuNiA0ODkuNiA0ODkuNiAyNzIgMjcyIDI3MiA3NjEuNiA0NjIuNCA0NjIuNCA3NjEuNiA3MzQgNjkzLjQgNzA3LjIgNzQ3LjggNjY2LjIgNjM5IDc2OC4zIDczNCAzNTMuMiA1MDMgNzYxLjIgNjExLjggODk3LjIgNzM0IDc2MS42IDY2Ni4yIDc2MS42IDcyMC42IDU0NCA3MDcuMiA3MzQgNzM0IDEwMDYgNzM0IDczNCA1OTguNCAyNzIgNDg5LjYgMjcyIDQ4OS42IDI3MiAyNzIgNDg5LjYgNTQ0IDQzNS4yIDU0NCA0MzUuMiAyOTkuMiA0ODkuNiA1NDQgMjcyIDI5OS4yIDUxNi44IDI3MiA4MTYgNTQ0IDQ4OS42IDU0NCA1MTYuOCAzODAuOCAzODYuMiAzODAuOCA1NDQgNTE2LjggNzA3LjIgNTE2LjggNTE2LjggNDM1LjIgNDg5LjYgOTc5LjIgNDg5LjYgNDg5LjYgNDg5LjZdCmVuZG9iagoyMSAwIG9iagpbNTAwXQplbmRvYmoKMjIgMCBvYmoKWzYwMi4xIDcyNi4zIDY5My4zIDMyNy42IDQ3MS41IDcxOS40IDU3NiA4NTAgNjkzLjMgNzE5LjggNjI4LjIgNzE5LjggNjgwLjUgNTEwLjkgNjY3LjYgNjkzLjMgNjkzLjMgOTU0LjUgNjkzLjMgNjkzLjMgNTYzLjEgMjQ5LjYgNDU4LjYgMjQ5LjYgNDU4LjYgMjQ5LjYgMjQ5LjYgNDU4LjYgNTEwLjkgNDA2LjQgNTEwLjkgNDA2LjQgMjc1LjggNDU4LjYgNTEwLjkgMjQ5LjYgMjc1LjggNDg0LjcgMjQ5LjYgNzcyLjEgNTEwLjkgNDU4LjYgNTEwLjkgNDg0LjcgMzU0LjEgMzU5LjQgMzU0LjEgNTEwLjkgNDg0LjcgNjY3LjYgNDg0LjcgNDg0LjddCmVuZG9iagoyMyAwIG9iaiA8PAovTGVuZ3RoMSAxNDc4Ci9MZW5ndGgyIDg1MTgKL0xlbmd0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v8GGxC7XToegrvebyXdbtw9p5HgLpTWptCKqTLk+yf8P4ygJngplbmRzdHJlYW0KZW5kb2JqCjQwIDAgb2JqIDw8Ci9UeXBlIC9Gb250RGVzY3JpcHRvcgovRm9udE5hbWUgL01GTURBRitDTVRUOQovRmxhZ3MgNAovRm9udEJCb3ggWy02IC0yMzMgNTQyIDY5OF0KL0FzY2VudCA2MTEKL0NhcEhlaWdodCA2MTEKL0Rlc2NlbnQgLTIyMgovSXRhbGljQW5nbGUgMAovU3RlbVYgNzQKL1hIZWlnaHQgNDMxCi9DaGFyU2V0ICgvZi9uL28vcikKL0ZvbnRGaWxlIDM5IDAgUgo+PiBlbmRvYmoKNyAwIG9iaiA8PAovVHlwZSAvRm9udAovU3VidHlwZSAvVHlwZTEKL0Jhc2VGb250IC9RWktSRE0rQ01CWDEwCi9Gb250RGVzY3JpcHRvciAyNCAwIFIKL0ZpcnN0Q2hhciA2NQovTGFzdENoYXIgMTE2Ci9XaWR0aHMgMTkgMCBSCj4+IGVuZG9iago5IDAgb2JqIDw8Ci9UeXBlIC9Gb250Ci9TdWJ0eXBlIC9UeXBlMQovQmFzZUZvbnQgL0dYR0dCUStDTUJYMTIKL0ZvbnREZXNjcmlwdG9yIDI2IDAgUgovRmlyc3RDaGFyIDQ5Ci9MYXN0Q2hhciAxMTcKL1dpZHRocyAxNyAwIFIKPj4gZW5kb2JqCjggMCBvYmogPDwKL1R5cGUgL0ZvbnQKL1N1YnR5cGUgL1R5cGUxCi9CYXNlRm9udCAvUlpQTUxTK0NNUjEwCi9Gb250RGVzY3JpcHRvciAyOCAwIFIKL0ZpcnN0Q2hhciAxMQovTGFzdENoYXIgMTIyCi9XaWR0aHMgMTggMCBSCj4+IGVuZG9iago2IDAgb2JqIDw8Ci9UeXBlIC9Gb250Ci9TdWJ0eXBlIC9UeXBlMQovQmFzZUZvbnQgL1BIQlhEUStDTVIxMgovRm9udERlc2NyaXB0b3IgMzAgMCBSCi9GaXJzdENoYXIgNDQKL0xhc3RDaGFyIDEyNwovV2lkdGhzIDIwIDAgUgo+PiBlbmRvYmoKNCAwIG9iaiA8PAovVHlwZSAvRm9udAovU3VidHlwZSAvVHlwZTEKL0Jhc2VGb250IC9KVFlNS04rQ01SMTcKL0ZvbnREZXNjcmlwdG9yIDMyIDAgUgovRmlyc3RDaGFyIDcwCi9MYXN0Q2hhciAxMjEKL1dpZHRocyAyMiAwIFIKPj4gZW5kb2JqCjExIDAgb2JqIDw8Ci9UeXBlIC9Gb250Ci9TdWJ0eXBlIC9UeXBlMQovQmFzZUZvbnQgL1RLSkhISStDTVI5Ci9Gb250RGVzY3JpcHRvciAzNCAwIFIKL0ZpcnN0Q2hhciAzMwovTGFzdENoYXIgMTIxCi9XaWR0aHMgMTUgMCBSCj4+IGVuZG9iago1IDAgb2JqIDw8Ci9UeXBlIC9Gb250Ci9TdWJ0eXBlIC9UeXBlMQovQmFzZUZvbnQgL1VFSVpZVytDTVNZMTAKL0ZvbnREZXNjcmlwdG9yIDM2IDAgUgovRmlyc3RDaGFyIDMKL0xhc3RDaGFyIDMKL1dpZHRocyAyMSAwIFIKPj4gZW5kb2JqCjEwIDAgb2JqIDw8Ci9UeXBlIC9Gb250Ci9TdWJ0eXBlIC9UeXBlMQovQmFzZUZvbnQgL0dVT1dUSytDTVNZNgovRm9udERlc2NyaXB0b3IgMzggMCBSCi9GaXJzdENoYXIgMwovTGFzdENoYXIgMwovV2lkdGhzIDE2IDAgUgo+PiBlbmRvYmoKMTIgMCBvYmogPDwKL1R5cGUgL0ZvbnQKL1N1YnR5cGUgL1R5cGUxCi9CYXNlRm9udCAvTUZNREFGK0NNVFQ5Ci9Gb250RGVzY3JpcHRvciA0MCAwIFIKL0ZpcnN0Q2hhciAxMDIKL0xhc3RDaGFyIDExNAovV2lkdGhzIDE0IDAgUgo+PiBlbmRvYmoKMTMgMCBvYmogPDwKL1R5cGUgL1BhZ2VzCi9Db3VudCAxCi9LaWRzIFsyIDAgUl0KPj4gZW5kb2JqCjQxIDAgb2JqIDw8Ci9UeXBlIC9DYXRhbG9nCi9QYWdlcyAxMyAwIFIKPj4gZW5kb2JqCjQyIDAgb2JqIDw8Ci9Qcm9kdWNlciAocGRmVGVYLTEuNDAuMTApCi9DcmVhdG9yIChUZVgpCi9DcmVhdGlvbkRhdGUgKEQ6MjAxMjA2MTExODA4NDYrMDInMDAnKQovTW9kRGF0ZSAoRDoyMDEyMDYxMTE4MDg0NiswMicwMCcpCi9UcmFwcGVkIC9GYWxzZQovUFRFWC5GdWxsYmFubmVyIChUaGlzIGlzIHBkZlRlWCwgVmVyc2lvbiAzLjE0MTU5MjYtMS40MC4xMC0yLjIgKFRlWCBMaXZlIDIwMDkvRGViaWFuKSBrcGF0aHNlYSB2ZXJzaW9uIDUuMC4wKQo+PiBlbmRvYmoKeHJlZgowIDQzCjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAwMDAwMzMxNiAwMDAwMCBuIAowMDAwMDAzMjA0IDAwMDAwIG4gCjAwMDAwMDAwMTUgMDAwMDAgbiAKMDAwMDEwODgzNCAwMDAwMCBuIAowMDAwMTA5MTEyIDAwMDAwIG4gCjAwMDAxMDg2OTUgMDAwMDAgbiAKMDAwMDEwODI3NiAwMDAwMCBuIAowMDAwMTA4NTU2IDAwMDAwIG4gCjAwMDAxMDg0MTYgMDAwMDAgbiAKMDAwMDEwOTI0OSAwMDAwMCBuIAowMDAwMTA4OTczIDAwMDAwIG4gCjAwMDAxMDkzODYgMDAwMDAgbiAKMDAwMDEwOTUyNyAwMDAwMCBuIAowMDAwMDAzNDc0IDAwMDAwIG4gCjAwMDAwMDM1NDQgMDAwMDAgbiAKMDAwMDAwNDA3MSAwMDAwMCBuIAowMDAwMDA0MDk1IDAwMDAwIG4gCjAwMDAwMDQ1MDEgMDAwMDAgbiAKMDAwMDAwNTEyMyAwMDAwMCBuIAowMDAwMDA1NDQxIDAwMDAwIG4gCjAwMDAwMDU5MDYgMDAwMDAgbiAKMDAwMDAwNTkyOCAwMDAwMCBuIAowMDAwMDA2MjU0IDAwMDAwIG4gCjAwMDAwMTU4NzcgMDAwMDAgbiAKMDAwMDAxNjEwOCAwMDAwMCBuIAowMDAwMDI0NDIxIDAwMDAwIG4gCjAwMDAwMjQ2NjAgMDAwMDAgbiAKMDAwMDA0MzkyNSAwMDAwMCBuIAowMDAwMDQ0MzQyIDAwMDAwIG4gCjAwMDAwNTg3MzMgMDAwMDAgbiAKMDAwMDA1OTA1NiAwMDAwMCBuIAowMDAwMDY5NjY1IDAwMDAwIG4gCjAwMDAwNjk5MTcgMDAwMDAgbiAKMDAwMDA4NTU4MCAwMDAwMCBuIAowMDAwMDg1OTMxIDAwMDAwIG4gCjAwMDAwOTMwNDggMDAwMDAgbiAKMDAwMDA5MzI3OSAwMDAwMCBuIAowMDAwMTAwNDQ1IDAwMDAwIG4gCjAwMDAxMDA2NzQgMDAwMDAgbiAKMDAwMDEwODA1NSAwMDAwMCBuIAowMDAwMTA5NTg1IDAwMDAwIG4gCjAwMDAxMDk2MzYgMDAwMDAgbiAKdHJhaWxlcgo8PCAvU2l6ZSA0MwovUm9vdCA0MSAwIFIKL0luZm8gNDIgMCBSCi9JRCBbPEE1MTIyOERDMEI2RDhERTcwNDA5QjM4RUY1MDJDQkYwPiA8QTUxMjI4REMwQjZEOERFNzA0MDlCMzhFRjUwMkNCRjA+XSA+PgpzdGFydHhyZWYKMTA5OTAyCiUlRU9GCg=="
    387 }
    388 
    389 
    390 ///////// Rest taken from generated pdf.js. (c) by Mozilla. ////////
    391 ///////// File unchanged, except that all references to DOM- ////////
    392 ///////// specific global names have been prefixed by PdfJS_window., ////////
    393 ///////// to avoid interference with the benchmark runner script. ////////
    394 
    395 /* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
    396 /* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */
    397 
    398 var PDFJS = {};
    399 
    400 (function pdfjsWrapper() {
    401   // Use strict in our context only - users might not want it
    402   'use strict';
    403 
    404   PDFJS.build = '3cc61f0';
    405 
    406   // Files are inserted below - see Makefile
    407 /* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
    408 /* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */
    409 
    410 'use strict';
    411 
    412 var globalScope = (typeof PdfJS_window.window === 'undefined') ? this : PdfJS_window.window;
    413 
    414 var isWorker = (typeof PdfJS_window.window == 'undefined');
    415 
    416 var ERRORS = 0, WARNINGS = 1, TODOS = 5;
    417 var verbosity = WARNINGS;
    418 
    419 // The global PDFJS object exposes the API
    420 // In production, it will be declared outside a global wrapper
    421 // In development, it will be declared here
    422 if (!globalScope.PDFJS) {
    423   globalScope.PDFJS = {};
    424 }
    425 
    426 // getPdf()
    427 // Convenience function to perform binary Ajax GET
    428 // Usage: getPdf('http://...', callback)
    429 //        getPdf({
    430 //                 url:String ,
    431 //                 [,progress:Function, error:Function]
    432 //               },
    433 //               callback)
    434 function getPdf(arg, callback) {
    435   var params = arg;
    436   if (typeof arg === 'string')
    437     params = { url: arg };
    438 
    439   var xhr = new PdfJS_window.XMLHttpRequest();
    440   xhr.open('GET', params.url);
    441   xhr.mozResponseType = xhr.responseType = 'arraybuffer';
    442   var protocol = params.url.indexOf(':') < 0 ? PdfJS_window.window.location.protocol :
    443     params.url.substring(0, params.url.indexOf(':') + 1);
    444   xhr.expected = (protocol === 'http:' || protocol === 'https:') ? 200 : 0;
    445 
    446   if ('progress' in params)
    447     xhr.onprogress = params.progress || undefined;
    448 
    449   if ('error' in params)
    450     xhr.onerror = params.error || undefined;
    451 
    452   xhr.onreadystatechange = function getPdfOnreadystatechange(e) {
    453     if (xhr.readyState === 4) {
    454       if (xhr.status === xhr.expected) {
    455         var data = (xhr.mozResponseArrayBuffer || xhr.mozResponse ||
    456                     xhr.responseArrayBuffer || xhr.response);
    457         callback(data);
    458       } else if (params.error) {
    459         params.error(e);
    460       }
    461     }
    462   };
    463   xhr.send(null);
    464 }
    465 globalScope.PDFJS.getPdf = getPdf;
    466 globalScope.PDFJS.pdfBug = false;
    467 
    468 var Page = (function PageClosure() {
    469   function Page(xref, pageNumber, pageDict, ref) {
    470     this.pageNumber = pageNumber;
    471     this.pageDict = pageDict;
    472     this.xref = xref;
    473     this.ref = ref;
    474 
    475     this.displayReadyPromise = null;
    476   }
    477 
    478   Page.prototype = {
    479     getPageProp: function Page_getPageProp(key) {
    480       return this.pageDict.get(key);
    481     },
    482     inheritPageProp: function Page_inheritPageProp(key) {
    483       var dict = this.pageDict;
    484       var obj = dict.get(key);
    485       while (obj === undefined) {
    486         dict = dict.get('Parent');
    487         if (!dict)
    488           break;
    489         obj = dict.get(key);
    490       }
    491       return obj;
    492     },
    493     get content() {
    494       return shadow(this, 'content', this.getPageProp('Contents'));
    495     },
    496     get resources() {
    497       return shadow(this, 'resources', this.inheritPageProp('Resources'));
    498     },
    499     get mediaBox() {
    500       var obj = this.inheritPageProp('MediaBox');
    501       // Reset invalid media box to letter size.
    502       if (!isArray(obj) || obj.length !== 4)
    503         obj = [0, 0, 612, 792];
    504       return shadow(this, 'mediaBox', obj);
    505     },
    506     get view() {
    507       var mediaBox = this.mediaBox;
    508       var cropBox = this.inheritPageProp('CropBox');
    509       if (!isArray(cropBox) || cropBox.length !== 4)
    510         return shadow(this, 'view', mediaBox);
    511 
    512       // From the spec, 6th ed., p.963:
    513       // "The crop, bleed, trim, and art boxes should not ordinarily
    514       // extend beyond the boundaries of the media box. If they do, they are
    515       // effectively reduced to their intersection with the media box."
    516       cropBox = Util.intersect(cropBox, mediaBox);
    517       if (!cropBox)
    518         return shadow(this, 'view', mediaBox);
    519 
    520       return shadow(this, 'view', cropBox);
    521     },
    522     get annotations() {
    523       return shadow(this, 'annotations', this.inheritPageProp('Annots'));
    524     },
    525     get rotate() {
    526       var rotate = this.inheritPageProp('Rotate') || 0;
    527       // Normalize rotation so it's a multiple of 90 and between 0 and 270
    528       if (rotate % 90 != 0) {
    529         rotate = 0;
    530       } else if (rotate >= 360) {
    531         rotate = rotate % 360;
    532       } else if (rotate < 0) {
    533         // The spec doesn't cover negatives, assume its counterclockwise
    534         // rotation. The following is the other implementation of modulo.
    535         rotate = ((rotate % 360) + 360) % 360;
    536       }
    537       return shadow(this, 'rotate', rotate);
    538     },
    539 
    540     getOperatorList: function Page_getOperatorList(handler, dependency) {
    541       var xref = this.xref;
    542       var content = this.content;
    543       var resources = this.resources;
    544       if (isArray(content)) {
    545         // fetching items
    546         var streams = [];
    547         var i, n = content.length;
    548         for (i = 0; i < n; ++i)
    549           streams.push(xref.fetchIfRef(content[i]));
    550         content = new StreamsSequenceStream(streams);
    551       } else if (isStream(content)) {
    552         content.reset();
    553       } else if (!content) {
    554         // replacing non-existent page content with empty one
    555         content = new Stream(new Uint8Array(0));
    556       }
    557 
    558       var pe = this.pe = new PartialEvaluator(
    559                                 xref, handler, 'p' + this.pageNumber + '_');
    560 
    561       return pe.getOperatorList(content, resources, dependency);
    562     },
    563 
    564     getLinks: function Page_getLinks() {
    565       var links = [];
    566       var annotations = pageGetAnnotations();
    567       var i, n = annotations.length;
    568       for (i = 0; i < n; ++i) {
    569         if (annotations[i].type != 'Link')
    570           continue;
    571         links.push(annotations[i]);
    572       }
    573       return links;
    574     },
    575     getAnnotations: function Page_getAnnotations() {
    576       var xref = this.xref;
    577       function getInheritableProperty(annotation, name) {
    578         var item = annotation;
    579         while (item && !item.has(name)) {
    580           item = item.get('Parent');
    581         }
    582         if (!item)
    583           return null;
    584         return item.get(name);
    585       }
    586       function isValidUrl(url) {
    587         if (!url)
    588           return false;
    589         var colon = url.indexOf(':');
    590         if (colon < 0)
    591           return false;
    592         var protocol = url.substr(0, colon);
    593         switch (protocol) {
    594           case 'http':
    595           case 'https':
    596           case 'ftp':
    597           case 'mailto':
    598             return true;
    599           default:
    600             return false;
    601         }
    602       }
    603 
    604       var annotations = this.annotations || [];
    605       var i, n = annotations.length;
    606       var items = [];
    607       for (i = 0; i < n; ++i) {
    608         var annotationRef = annotations[i];
    609         var annotation = xref.fetch(annotationRef);
    610         if (!isDict(annotation))
    611           continue;
    612         var subtype = annotation.get('Subtype');
    613         if (!isName(subtype))
    614           continue;
    615         var rect = annotation.get('Rect');
    616 
    617         var item = {};
    618         item.type = subtype.name;
    619         item.rect = rect;
    620         switch (subtype.name) {
    621           case 'Link':
    622             var a = annotation.get('A');
    623             if (a) {
    624               switch (a.get('S').name) {
    625                 case 'URI':
    626                   var url = a.get('URI');
    627                   // TODO: pdf spec mentions urls can be relative to a Base
    628                   // entry in the dictionary.
    629                   if (!isValidUrl(url))
    630                     url = '';
    631                   item.url = url;
    632                   break;
    633                 case 'GoTo':
    634                   item.dest = a.get('D');
    635                   break;
    636                 default:
    637                   TODO('other link types');
    638               }
    639             } else if (annotation.has('Dest')) {
    640               // simple destination link
    641               var dest = annotation.get('Dest');
    642               item.dest = isName(dest) ? dest.name : dest;
    643             }
    644             break;
    645           case 'Widget':
    646             var fieldType = getInheritableProperty(annotation, 'FT');
    647             if (!isName(fieldType))
    648               break;
    649             item.fieldType = fieldType.name;
    650             // Building the full field name by collecting the field and
    651             // its ancestors 'T' properties and joining them using '.'.
    652             var fieldName = [];
    653             var namedItem = annotation, ref = annotationRef;
    654             while (namedItem) {
    655               var parent = namedItem.get('Parent');
    656               var parentRef = namedItem.getRaw('Parent');
    657               var name = namedItem.get('T');
    658               if (name) {
    659                 fieldName.unshift(stringToPDFString(name));
    660               } else {
    661                 // The field name is absent, that means more than one field
    662                 // with the same name may exist. Replacing the empty name
    663                 // with the '`' plus index in the parent's 'Kids' array.
    664                 // This is not in the PDF spec but necessary to id the
    665                 // the input controls.
    666                 var kids = parent.get('Kids');
    667                 var j, jj;
    668                 for (j = 0, jj = kids.length; j < jj; j++) {
    669                   var kidRef = kids[j];
    670                   if (kidRef.num == ref.num && kidRef.gen == ref.gen)
    671                     break;
    672                 }
    673                 fieldName.unshift('`' + j);
    674               }
    675               namedItem = parent;
    676               ref = parentRef;
    677             }
    678             item.fullName = fieldName.join('.');
    679             var alternativeText = stringToPDFString(annotation.get('TU') || '');
    680             item.alternativeText = alternativeText;
    681             var da = getInheritableProperty(annotation, 'DA') || '';
    682             var m = /([\d\.]+)\sTf/.exec(da);
    683             if (m)
    684               item.fontSize = parseFloat(m[1]);
    685             item.textAlignment = getInheritableProperty(annotation, 'Q');
    686             item.flags = getInheritableProperty(annotation, 'Ff') || 0;
    687             break;
    688           case 'Text':
    689             var content = annotation.get('Contents');
    690             var title = annotation.get('T');
    691             item.content = stringToPDFString(content || '');
    692             item.title = stringToPDFString(title || '');
    693             item.name = !annotation.has('Name') ? 'Note' :
    694               annotation.get('Name').name;
    695             break;
    696           default:
    697             TODO('unimplemented annotation type: ' + subtype.name);
    698             break;
    699         }
    700         items.push(item);
    701       }
    702       return items;
    703     }
    704   };
    705 
    706   return Page;
    707 })();
    708 
    709 /**
    710  * The `PDFDocument` holds all the data of the PDF file. Compared to the
    711  * `PDFDoc`, this one doesn't have any job management code.
    712  * Right now there exists one PDFDocument on the main thread + one object
    713  * for each worker. If there is no worker support enabled, there are two
    714  * `PDFDocument` objects on the main thread created.
    715  */
    716 var PDFDocument = (function PDFDocumentClosure() {
    717   function PDFDocument(arg, callback) {
    718     if (isStream(arg))
    719       init.call(this, arg);
    720     else if (isArrayBuffer(arg))
    721       init.call(this, new Stream(arg));
    722     else
    723       error('PDFDocument: Unknown argument type');
    724   }
    725 
    726   function init(stream) {
    727     assertWellFormed(stream.length > 0, 'stream must have data');
    728     this.stream = stream;
    729     this.setup();
    730     this.acroForm = this.catalog.catDict.get('AcroForm');
    731   }
    732 
    733   function find(stream, needle, limit, backwards) {
    734     var pos = stream.pos;
    735     var end = stream.end;
    736     var str = '';
    737     if (pos + limit > end)
    738       limit = end - pos;
    739     for (var n = 0; n < limit; ++n)
    740       str += stream.getChar();
    741     stream.pos = pos;
    742     var index = backwards ? str.lastIndexOf(needle) : str.indexOf(needle);
    743     if (index == -1)
    744       return false; /* not found */
    745     stream.pos += index;
    746     return true; /* found */
    747   }
    748 
    749   PDFDocument.prototype = {
    750     get linearization() {
    751       var length = this.stream.length;
    752       var linearization = false;
    753       if (length) {
    754         linearization = new Linearization(this.stream);
    755         if (linearization.length != length)
    756           linearization = false;
    757       }
    758       // shadow the prototype getter with a data property
    759       return shadow(this, 'linearization', linearization);
    760     },
    761     get startXRef() {
    762       var stream = this.stream;
    763       var startXRef = 0;
    764       var linearization = this.linearization;
    765       if (linearization) {
    766         // Find end of first obj.
    767         stream.reset();
    768         if (find(stream, 'endobj', 1024))
    769           startXRef = stream.pos + 6;
    770       } else {
    771         // Find startxref by jumping backward from the end of the file.
    772         var step = 1024;
    773         var found = false, pos = stream.end;
    774         while (!found && pos > 0) {
    775           pos -= step - 'startxref'.length;
    776           if (pos < 0)
    777             pos = 0;
    778           stream.pos = pos;
    779           found = find(stream, 'startxref', step, true);
    780         }
    781         if (found) {
    782           stream.skip(9);
    783           var ch;
    784           do {
    785             ch = stream.getChar();
    786           } while (Lexer.isSpace(ch));
    787           var str = '';
    788           while ((ch - '0') <= 9) {
    789             str += ch;
    790             ch = stream.getChar();
    791           }
    792           startXRef = parseInt(str, 10);
    793           if (isNaN(startXRef))
    794             startXRef = 0;
    795         }
    796       }
    797       // shadow the prototype getter with a data property
    798       return shadow(this, 'startXRef', startXRef);
    799     },
    800     get mainXRefEntriesOffset() {
    801       var mainXRefEntriesOffset = 0;
    802       var linearization = this.linearization;
    803       if (linearization)
    804         mainXRefEntriesOffset = linearization.mainXRefEntriesOffset;
    805       // shadow the prototype getter with a data property
    806       return shadow(this, 'mainXRefEntriesOffset', mainXRefEntriesOffset);
    807     },
    808     // Find the header, remove leading garbage and setup the stream
    809     // starting from the header.
    810     checkHeader: function PDFDocument_checkHeader() {
    811       var stream = this.stream;
    812       stream.reset();
    813       if (find(stream, '%PDF-', 1024)) {
    814         // Found the header, trim off any garbage before it.
    815         stream.moveStart();
    816         return;
    817       }
    818       // May not be a PDF file, continue anyway.
    819     },
    820     setup: function PDFDocument_setup(ownerPassword, userPassword) {
    821       this.checkHeader();
    822       var xref = new XRef(this.stream,
    823                           this.startXRef,
    824                           this.mainXRefEntriesOffset);
    825       this.xref = xref;
    826       this.catalog = new Catalog(xref);
    827     },
    828     get numPages() {
    829       var linearization = this.linearization;
    830       var num = linearization ? linearization.numPages : this.catalog.numPages;
    831       // shadow the prototype getter
    832       return shadow(this, 'numPages', num);
    833     },
    834     getDocumentInfo: function PDFDocument_getDocumentInfo() {
    835       var info;
    836       if (this.xref.trailer.has('Info')) {
    837         var infoDict = this.xref.trailer.get('Info');
    838 
    839         info = {};
    840         infoDict.forEach(function(key, value) {
    841           info[key] = typeof value !== 'string' ? value :
    842             stringToPDFString(value);
    843         });
    844       }
    845 
    846       return shadow(this, 'getDocumentInfo', info);
    847     },
    848     getFingerprint: function PDFDocument_getFingerprint() {
    849       var xref = this.xref, fileID;
    850       if (xref.trailer.has('ID')) {
    851         fileID = '';
    852         var id = xref.trailer.get('ID')[0];
    853         id.split('').forEach(function(el) {
    854           fileID += Number(el.charCodeAt(0)).toString(16);
    855         });
    856       } else {
    857         // If we got no fileID, then we generate one,
    858         // from the first 100 bytes of PDF
    859         var data = this.stream.bytes.subarray(0, 100);
    860         var hash = calculateMD5(data, 0, data.length);
    861         fileID = '';
    862         for (var i = 0, length = hash.length; i < length; i++) {
    863           fileID += Number(hash[i]).toString(16);
    864         }
    865       }
    866 
    867       return shadow(this, 'getFingerprint', fileID);
    868     },
    869     getPage: function PDFDocument_getPage(n) {
    870       return this.catalog.getPage(n);
    871     }
    872   };
    873 
    874   return PDFDocument;
    875 })();
    876 
    877 /* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
    878 /* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */
    879 
    880 'use strict';
    881 
    882 function log(msg) {
    883   if (PdfJS_window.console && PdfJS_window.console.log)
    884     PdfJS_window.console.log(msg);
    885   else if (print)
    886     print(msg);
    887 }
    888 
    889 function warn(msg) {
    890   if (verbosity >= WARNINGS)
    891     log('Warning: ' + msg);
    892 }
    893 
    894 function backtrace() {
    895   try {
    896     throw new Error();
    897   } catch (e) {
    898     return e.stack ? e.stack.split('\n').slice(2).join('\n') : '';
    899   }
    900 }
    901 
    902 function error(msg) {
    903   log('Error: ' + msg);
    904   log(backtrace());
    905   throw new Error(msg);
    906 }
    907 
    908 function TODO(what) {
    909   if (verbosity >= TODOS)
    910     log('TODO: ' + what);
    911 }
    912 
    913 function malformed(msg) {
    914   error('Malformed PDF: ' + msg);
    915 }
    916 
    917 function assert(cond, msg) {
    918   if (!cond)
    919     error(msg);
    920 }
    921 
    922 // In a well-formed PDF, |cond| holds.  If it doesn't, subsequent
    923 // behavior is undefined.
    924 function assertWellFormed(cond, msg) {
    925   if (!cond)
    926     malformed(msg);
    927 }
    928 
    929 function shadow(obj, prop, value) {
    930   Object.defineProperty(obj, prop, { value: value,
    931                                      enumerable: true,
    932                                      configurable: true,
    933                                      writable: false });
    934   return value;
    935 }
    936 
    937 function bytesToString(bytes) {
    938   var str = '';
    939   var length = bytes.length;
    940   for (var n = 0; n < length; ++n)
    941     str += String.fromCharCode(bytes[n]);
    942   return str;
    943 }
    944 
    945 function stringToBytes(str) {
    946   var length = str.length;
    947   var bytes = new Uint8Array(length);
    948   for (var n = 0; n < length; ++n)
    949     bytes[n] = str.charCodeAt(n) & 0xFF;
    950   return bytes;
    951 }
    952 
    953 var IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];
    954 
    955 var Util = PDFJS.Util = (function UtilClosure() {
    956   function Util() {}
    957 
    958   Util.makeCssRgb = function Util_makeCssRgb(r, g, b) {
    959     var ri = (255 * r) | 0, gi = (255 * g) | 0, bi = (255 * b) | 0;
    960     return 'rgb(' + ri + ',' + gi + ',' + bi + ')';
    961   };
    962 
    963   Util.makeCssCmyk = function Util_makeCssCmyk(c, m, y, k) {
    964     c = (new DeviceCmykCS()).getRgb([c, m, y, k]);
    965     var ri = (255 * c[0]) | 0, gi = (255 * c[1]) | 0, bi = (255 * c[2]) | 0;
    966     return 'rgb(' + ri + ',' + gi + ',' + bi + ')';
    967   };
    968 
    969   // For 2d affine transforms
    970   Util.applyTransform = function Util_applyTransform(p, m) {
    971     var xt = p[0] * m[0] + p[1] * m[2] + m[4];
    972     var yt = p[0] * m[1] + p[1] * m[3] + m[5];
    973     return [xt, yt];
    974   };
    975 
    976   Util.applyInverseTransform = function Util_applyInverseTransform(p, m) {
    977     var d = m[0] * m[3] - m[1] * m[2];
    978     var xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d;
    979     var yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d;
    980     return [xt, yt];
    981   };
    982 
    983   Util.inverseTransform = function Util_inverseTransform(m) {
    984     var d = m[0] * m[3] - m[1] * m[2];
    985     return [m[3] / d, -m[1] / d, -m[2] / d, m[0] / d,
    986       (m[2] * m[5] - m[4] * m[3]) / d, (m[4] * m[1] - m[5] * m[0]) / d];
    987   };
    988 
    989   // Apply a generic 3d matrix M on a 3-vector v:
    990   //   | a b c |   | X |
    991   //   | d e f | x | Y |
    992   //   | g h i |   | Z |
    993   // M is assumed to be serialized as [a,b,c,d,e,f,g,h,i],
    994   // with v as [X,Y,Z]
    995   Util.apply3dTransform = function Util_apply3dTransform(m, v) {
    996     return [
    997       m[0] * v[0] + m[1] * v[1] + m[2] * v[2],
    998       m[3] * v[0] + m[4] * v[1] + m[5] * v[2],
    999       m[6] * v[0] + m[7] * v[1] + m[8] * v[2]
   1000     ];
   1001   }
   1002 
   1003   // Normalize rectangle rect=[x1, y1, x2, y2] so that (x1,y1) < (x2,y2)
   1004   // For coordinate systems whose origin lies in the bottom-left, this
   1005   // means normalization to (BL,TR) ordering. For systems with origin in the
   1006   // top-left, this means (TL,BR) ordering.
   1007   Util.normalizeRect = function Util_normalizeRect(rect) {
   1008     var r = rect.slice(0); // clone rect
   1009     if (rect[0] > rect[2]) {
   1010       r[0] = rect[2];
   1011       r[2] = rect[0];
   1012     }
   1013     if (rect[1] > rect[3]) {
   1014       r[1] = rect[3];
   1015       r[3] = rect[1];
   1016     }
   1017     return r;
   1018   }
   1019 
   1020   // Returns a rectangle [x1, y1, x2, y2] corresponding to the
   1021   // intersection of rect1 and rect2. If no intersection, returns 'false'
   1022   // The rectangle coordinates of rect1, rect2 should be [x1, y1, x2, y2]
   1023   Util.intersect = function Util_intersect(rect1, rect2) {
   1024     function compare(a, b) {
   1025       return a - b;
   1026     };
   1027 
   1028     // Order points along the axes
   1029     var orderedX = [rect1[0], rect1[2], rect2[0], rect2[2]].sort(compare),
   1030         orderedY = [rect1[1], rect1[3], rect2[1], rect2[3]].sort(compare),
   1031         result = [];
   1032 
   1033     rect1 = Util.normalizeRect(rect1);
   1034     rect2 = Util.normalizeRect(rect2);
   1035 
   1036     // X: first and second points belong to different rectangles?
   1037     if ((orderedX[0] === rect1[0] && orderedX[1] === rect2[0]) ||
   1038         (orderedX[0] === rect2[0] && orderedX[1] === rect1[0])) {
   1039       // Intersection must be between second and third points
   1040       result[0] = orderedX[1];
   1041       result[2] = orderedX[2];
   1042     } else {
   1043       return false;
   1044     }
   1045 
   1046     // Y: first and second points belong to different rectangles?
   1047     if ((orderedY[0] === rect1[1] && orderedY[1] === rect2[1]) ||
   1048         (orderedY[0] === rect2[1] && orderedY[1] === rect1[1])) {
   1049       // Intersection must be between second and third points
   1050       result[1] = orderedY[1];
   1051       result[3] = orderedY[2];
   1052     } else {
   1053       return false;
   1054     }
   1055 
   1056     return result;
   1057   };
   1058 
   1059   Util.sign = function Util_sign(num) {
   1060     return num < 0 ? -1 : 1;
   1061   };
   1062 
   1063   return Util;
   1064 })();
   1065 
   1066 var PageViewport = PDFJS.PageViewport = (function PageViewportClosure() {
   1067   function PageViewport(viewBox, scale, rotate, offsetX, offsetY) {
   1068     // creating transform to convert pdf coordinate system to the normal
   1069     // canvas like coordinates taking in account scale and rotation
   1070     var centerX = (viewBox[2] + viewBox[0]) / 2;
   1071     var centerY = (viewBox[3] + viewBox[1]) / 2;
   1072     var rotateA, rotateB, rotateC, rotateD;
   1073     switch (rotate) {
   1074       case -180:
   1075       case 180:
   1076         rotateA = -1; rotateB = 0; rotateC = 0; rotateD = 1;
   1077         break;
   1078       case -270:
   1079       case 90:
   1080         rotateA = 0; rotateB = 1; rotateC = 1; rotateD = 0;
   1081         break;
   1082       case -90:
   1083       case 270:
   1084         rotateA = 0; rotateB = -1; rotateC = -1; rotateD = 0;
   1085         break;
   1086       case 360:
   1087       case 0:
   1088       default:
   1089         rotateA = 1; rotateB = 0; rotateC = 0; rotateD = -1;
   1090         break;
   1091     }
   1092     var offsetCanvasX, offsetCanvasY;
   1093     var width, height;
   1094     if (rotateA == 0) {
   1095       offsetCanvasX = Math.abs(centerY - viewBox[1]) * scale + offsetX;
   1096       offsetCanvasY = Math.abs(centerX - viewBox[0]) * scale + offsetY;
   1097       width = Math.abs(viewBox[3] - viewBox[1]) * scale;
   1098       height = Math.abs(viewBox[2] - viewBox[0]) * scale;
   1099     } else {
   1100       offsetCanvasX = Math.abs(centerX - viewBox[0]) * scale + offsetX;
   1101       offsetCanvasY = Math.abs(centerY - viewBox[1]) * scale + offsetY;
   1102       width = Math.abs(viewBox[2] - viewBox[0]) * scale;
   1103       height = Math.abs(viewBox[3] - viewBox[1]) * scale;
   1104     }
   1105     // creating transform for the following operations:
   1106     // translate(-centerX, -centerY), rotate and flip vertically,
   1107     // scale, and translate(offsetCanvasX, offsetCanvasY)
   1108     this.transform = [
   1109       rotateA * scale,
   1110       rotateB * scale,
   1111       rotateC * scale,
   1112       rotateD * scale,
   1113       offsetCanvasX - rotateA * scale * centerX - rotateC * scale * centerY,
   1114       offsetCanvasY - rotateB * scale * centerX - rotateD * scale * centerY
   1115     ];
   1116 
   1117     this.offsetX = offsetX;
   1118     this.offsetY = offsetY;
   1119     this.width = width;
   1120     this.height = height;
   1121     this.fontScale = scale;
   1122   }
   1123   PageViewport.prototype = {
   1124     convertToViewportPoint: function PageViewport_convertToViewportPoint(x, y) {
   1125       return Util.applyTransform([x, y], this.transform);
   1126     },
   1127     convertToViewportRectangle:
   1128       function PageViewport_convertToViewportRectangle(rect) {
   1129       var tl = Util.applyTransform([rect[0], rect[1]], this.transform);
   1130       var br = Util.applyTransform([rect[2], rect[3]], this.transform);
   1131       return [tl[0], tl[1], br[0], br[1]];
   1132     },
   1133     convertToPdfPoint: function PageViewport_convertToPdfPoint(x, y) {
   1134       return Util.applyInverseTransform([x, y], this.transform);
   1135     }
   1136   };
   1137   return PageViewport;
   1138 })();
   1139 
   1140 var PDFStringTranslateTable = [
   1141   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
   1142   0x2D8, 0x2C7, 0x2C6, 0x2D9, 0x2DD, 0x2DB, 0x2DA, 0x2DC, 0, 0, 0, 0, 0, 0, 0,
   1143   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
   1144   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
   1145   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
   1146   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014,
   1147   0x2013, 0x192, 0x2044, 0x2039, 0x203A, 0x2212, 0x2030, 0x201E, 0x201C,
   1148   0x201D, 0x2018, 0x2019, 0x201A, 0x2122, 0xFB01, 0xFB02, 0x141, 0x152, 0x160,
   1149   0x178, 0x17D, 0x131, 0x142, 0x153, 0x161, 0x17E, 0, 0x20AC
   1150 ];
   1151 
   1152 function stringToPDFString(str) {
   1153   var i, n = str.length, str2 = '';
   1154   if (str[0] === '\xFE' && str[1] === '\xFF') {
   1155     // UTF16BE BOM
   1156     for (i = 2; i < n; i += 2)
   1157       str2 += String.fromCharCode(
   1158         (str.charCodeAt(i) << 8) | str.charCodeAt(i + 1));
   1159   } else {
   1160     for (i = 0; i < n; ++i) {
   1161       var code = PDFStringTranslateTable[str.charCodeAt(i)];
   1162       str2 += code ? String.fromCharCode(code) : str.charAt(i);
   1163     }
   1164   }
   1165   return str2;
   1166 }
   1167 
   1168 function isBool(v) {
   1169   return typeof v == 'boolean';
   1170 }
   1171 
   1172 function isInt(v) {
   1173   return typeof v == 'number' && ((v | 0) == v);
   1174 }
   1175 
   1176 function isNum(v) {
   1177   return typeof v == 'number';
   1178 }
   1179 
   1180 function isString(v) {
   1181   return typeof v == 'string';
   1182 }
   1183 
   1184 function isNull(v) {
   1185   return v === null;
   1186 }
   1187 
   1188 function isName(v) {
   1189   return v instanceof Name;
   1190 }
   1191 
   1192 function isCmd(v, cmd) {
   1193   return v instanceof Cmd && (!cmd || v.cmd == cmd);
   1194 }
   1195 
   1196 function isDict(v, type) {
   1197   return v instanceof Dict && (!type || v.get('Type').name == type);
   1198 }
   1199 
   1200 function isArray(v) {
   1201   return v instanceof Array;
   1202 }
   1203 
   1204 function isStream(v) {
   1205   return typeof v == 'object' && v != null && ('getChar' in v);
   1206 }
   1207 
   1208 function isArrayBuffer(v) {
   1209   return typeof v == 'object' && v != null && ('byteLength' in v);
   1210 }
   1211 
   1212 function isRef(v) {
   1213   return v instanceof Ref;
   1214 }
   1215 
   1216 function isPDFFunction(v) {
   1217   var fnDict;
   1218   if (typeof v != 'object')
   1219     return false;
   1220   else if (isDict(v))
   1221     fnDict = v;
   1222   else if (isStream(v))
   1223     fnDict = v.dict;
   1224   else
   1225     return false;
   1226   return fnDict.has('FunctionType');
   1227 }
   1228 
   1229 /**
   1230  * 'Promise' object.
   1231  * Each object that is stored in PDFObjects is based on a Promise object that
   1232  * contains the status of the object and the data. There migth be situations,
   1233  * where a function want to use the value of an object, but it isn't ready at
   1234  * that time. To get a notification, once the object is ready to be used, s.o.
   1235  * can add a callback using the `then` method on the promise that then calls
   1236  * the callback once the object gets resolved.
   1237  * A promise can get resolved only once and only once the data of the promise
   1238  * can be set. If any of these happens twice or the data is required before
   1239  * it was set, an exception is throw.
   1240  */
   1241 var Promise = PDFJS.Promise = (function PromiseClosure() {
   1242   var EMPTY_PROMISE = {};
   1243 
   1244   /**
   1245    * If `data` is passed in this constructor, the promise is created resolved.
   1246    * If there isn't data, it isn't resolved at the beginning.
   1247    */
   1248   function Promise(name, data) {
   1249     this.name = name;
   1250     this.isRejected = false;
   1251     this.error = null;
   1252     // If you build a promise and pass in some data it's already resolved.
   1253     if (data != null) {
   1254       this.isResolved = true;
   1255       this._data = data;
   1256       this.hasData = true;
   1257     } else {
   1258       this.isResolved = false;
   1259       this._data = EMPTY_PROMISE;
   1260     }
   1261     this.callbacks = [];
   1262     this.errbacks = [];
   1263     this.progressbacks = [];
   1264   };
   1265   /**
   1266    * Builds a promise that is resolved when all the passed in promises are
   1267    * resolved.
   1268    * @param {Promise[]} promises Array of promises to wait for.
   1269    * @return {Promise} New dependant promise.
   1270    */
   1271   Promise.all = function Promise_all(promises) {
   1272     var deferred = new Promise();
   1273     var unresolved = promises.length;
   1274     var results = [];
   1275     if (unresolved === 0) {
   1276       deferred.resolve(results);
   1277       return deferred;
   1278     }
   1279     for (var i = 0, ii = promises.length; i < ii; ++i) {
   1280       var promise = promises[i];
   1281       promise.then((function(i) {
   1282         return function(value) {
   1283           results[i] = value;
   1284           unresolved--;
   1285           if (unresolved === 0)
   1286             deferred.resolve(results);
   1287         };
   1288       })(i));
   1289     }
   1290     return deferred;
   1291   };
   1292   Promise.prototype = {
   1293     hasData: false,
   1294 
   1295     set data(value) {
   1296       if (value === undefined) {
   1297         return;
   1298       }
   1299       if (this._data !== EMPTY_PROMISE) {
   1300         error('Promise ' + this.name +
   1301               ': Cannot set the data of a promise twice');
   1302       }
   1303       this._data = value;
   1304       this.hasData = true;
   1305 
   1306       if (this.onDataCallback) {
   1307         this.onDataCallback(value);
   1308       }
   1309     },
   1310 
   1311     get data() {
   1312       if (this._data === EMPTY_PROMISE) {
   1313         error('Promise ' + this.name + ': Cannot get data that isn\'t set');
   1314       }
   1315       return this._data;
   1316     },
   1317 
   1318     onData: function Promise_onData(callback) {
   1319       if (this._data !== EMPTY_PROMISE) {
   1320         callback(this._data);
   1321       } else {
   1322         this.onDataCallback = callback;
   1323       }
   1324     },
   1325 
   1326     resolve: function Promise_resolve(data) {
   1327       if (this.isResolved) {
   1328         error('A Promise can be resolved only once ' + this.name);
   1329       }
   1330       if (this.isRejected) {
   1331         error('The Promise was already rejected ' + this.name);
   1332       }
   1333 
   1334       this.isResolved = true;
   1335       this.data = data || null;
   1336       var callbacks = this.callbacks;
   1337 
   1338       for (var i = 0, ii = callbacks.length; i < ii; i++) {
   1339         callbacks[i].call(null, data);
   1340       }
   1341     },
   1342 
   1343     progress: function Promise_progress(data) {
   1344       var callbacks = this.progressbacks;
   1345       for (var i = 0, ii = callbacks.length; i < ii; i++) {
   1346         callbacks[i].call(null, data);
   1347       }
   1348     },
   1349 
   1350     reject: function Promise_reject(reason) {
   1351       if (this.isRejected) {
   1352         error('A Promise can be rejected only once ' + this.name);
   1353       }
   1354       if (this.isResolved) {
   1355         error('The Promise was already resolved ' + this.name);
   1356       }
   1357 
   1358       this.isRejected = true;
   1359       this.error = reason || null;
   1360       var errbacks = this.errbacks;
   1361 
   1362       for (var i = 0, ii = errbacks.length; i < ii; i++) {
   1363         errbacks[i].call(null, reason);
   1364       }
   1365     },
   1366 
   1367     then: function Promise_then(callback, errback, progressback) {
   1368       if (!callback) {
   1369         error('Requiring callback' + this.name);
   1370       }
   1371 
   1372       // If the promise is already resolved, call the callback directly.
   1373       if (this.isResolved) {
   1374         var data = this.data;
   1375         callback.call(null, data);
   1376       } else if (this.isRejected && errback) {
   1377         var error = this.error;
   1378         errback.call(null, error);
   1379       } else {
   1380         this.callbacks.push(callback);
   1381         if (errback)
   1382           this.errbacks.push(errback);
   1383       }
   1384 
   1385       if (progressback)
   1386         this.progressbacks.push(progressback);
   1387     }
   1388   };
   1389 
   1390   return Promise;
   1391 })();
   1392 
   1393 var StatTimer = (function StatTimerClosure() {
   1394   function rpad(str, pad, length) {
   1395     while (str.length < length)
   1396       str += pad;
   1397     return str;
   1398   }
   1399   function StatTimer() {
   1400     this.started = {};
   1401     this.times = [];
   1402     this.enabled = true;
   1403   }
   1404   StatTimer.prototype = {
   1405     time: function StatTimer_time(name) {
   1406       if (!this.enabled)
   1407         return;
   1408       if (name in this.started)
   1409         throw 'Timer is already running for ' + name;
   1410       this.started[name] = Date.now();
   1411     },
   1412     timeEnd: function StatTimer_timeEnd(name) {
   1413       if (!this.enabled)
   1414         return;
   1415       if (!(name in this.started))
   1416         throw 'Timer has not been started for ' + name;
   1417       this.times.push({
   1418         'name': name,
   1419         'start': this.started[name],
   1420         'end': Date.now()
   1421       });
   1422       // Remove timer from started so it can be called again.
   1423       delete this.started[name];
   1424     },
   1425     toString: function StatTimer_toString() {
   1426       var times = this.times;
   1427       var out = '';
   1428       // Find the longest name for padding purposes.
   1429       var longest = 0;
   1430       for (var i = 0, ii = times.length; i < ii; ++i) {
   1431         var name = times[i]['name'];
   1432         if (name.length > longest)
   1433           longest = name.length;
   1434       }
   1435       for (var i = 0, ii = times.length; i < ii; ++i) {
   1436         var span = times[i];
   1437         var duration = span.end - span.start;
   1438         out += rpad(span['name'], ' ', longest) + ' ' + duration + 'ms\n';
   1439       }
   1440       return out;
   1441     }
   1442   };
   1443   return StatTimer;
   1444 })();
   1445 
   1446 /* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
   1447 /* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */
   1448 
   1449 /**
   1450  * This is the main entry point for loading a PDF and interacting with it.
   1451  * NOTE: If a URL is used to fetch the PDF data a standard XMLHttpRequest(XHR)
   1452  * is used, which means it must follow the same origin rules that any XHR does
   1453  * e.g. No cross domain requests without CORS.
   1454  *
   1455  * @param {string|TypedAray} source Either a url to a PDF is located or a
   1456  * typed array already populated with data.
   1457  * @return {Promise} A promise that is resolved with {PDFDocumentProxy} object.
   1458  */
   1459 PDFJS.getDocument = function getDocument(source) {
   1460   var promise = new PDFJS.Promise();
   1461   var transport = new WorkerTransport(promise);
   1462   if (typeof source === 'string') {
   1463     // fetch url
   1464     PDFJS.getPdf(
   1465       {
   1466         url: source,
   1467         progress: function getPDFProgress(evt) {
   1468           if (evt.lengthComputable)
   1469             promise.progress({
   1470               loaded: evt.loaded,
   1471               total: evt.total
   1472             });
   1473         },
   1474         error: function getPDFError(e) {
   1475           promise.reject('Unexpected server response of ' +
   1476             e.target.status + '.');
   1477         }
   1478       },
   1479       function getPDFLoad(data) {
   1480         transport.sendData(data);
   1481       });
   1482   } else {
   1483     // assuming the source is array, instantiating directly from it
   1484     transport.sendData(source);
   1485   }
   1486   return promise;
   1487 };
   1488 
   1489 /**
   1490  * Proxy to a PDFDocument in the worker thread. Also, contains commonly used
   1491  * properties that can be read synchronously.
   1492  */
   1493 var PDFDocumentProxy = (function PDFDocumentProxyClosure() {
   1494   function PDFDocumentProxy(pdfInfo, transport) {
   1495     this.pdfInfo = pdfInfo;
   1496     this.transport = transport;
   1497   }
   1498   PDFDocumentProxy.prototype = {
   1499     /**
   1500      * @return {number} Total number of pages the PDF contains.
   1501      */
   1502     get numPages() {
   1503       return this.pdfInfo.numPages;
   1504     },
   1505     /**
   1506      * @return {string} A unique ID to identify a PDF. Not guaranteed to be
   1507      * unique.
   1508      */
   1509     get fingerprint() {
   1510       return this.pdfInfo.fingerprint;
   1511     },
   1512     /**
   1513      * @param {number} The page number to get. The first page is 1.
   1514      * @return {Promise} A promise that is resolved with a {PDFPageProxy}
   1515      * object.
   1516      */
   1517     getPage: function PDFDocumentProxy_getPage(number) {
   1518       return this.transport.getPage(number);
   1519     },
   1520     /**
   1521      * @return {Promise} A promise that is resolved with a lookup table for
   1522      * mapping named destinations to reference numbers.
   1523      */
   1524     getDestinations: function PDFDocumentProxy_getDestinations() {
   1525       var promise = new PDFJS.Promise();
   1526       var destinations = this.pdfInfo.destinations;
   1527       promise.resolve(destinations);
   1528       return promise;
   1529     },
   1530     /**
   1531      * @return {Promise} A promise that is resolved with an {array} that is a
   1532      * tree outline (if it has one) of the PDF. The tree is in the format of:
   1533      * [
   1534      *  {
   1535      *   title: string,
   1536      *   bold: boolean,
   1537      *   italic: boolean,
   1538      *   color: rgb array,
   1539      *   dest: dest obj,
   1540      *   items: array of more items like this
   1541      *  },
   1542      *  ...
   1543      * ].
   1544      */
   1545     getOutline: function PDFDocumentProxy_getOutline() {
   1546       var promise = new PDFJS.Promise();
   1547       var outline = this.pdfInfo.outline;
   1548       promise.resolve(outline);
   1549       return promise;
   1550     },
   1551     /**
   1552      * @return {Promise} A promise that is resolved with an {object} that has
   1553      * info and metadata properties.  Info is an {object} filled with anything
   1554      * available in the information dictionary and similarly metadata is a
   1555      * {Metadata} object with information from the metadata section of the PDF.
   1556      */
   1557     getMetadata: function PDFDocumentProxy_getMetadata() {
   1558       var promise = new PDFJS.Promise();
   1559       var info = this.pdfInfo.info;
   1560       var metadata = this.pdfInfo.metadata;
   1561       promise.resolve({
   1562         info: info,
   1563         metadata: metadata ? new PDFJS.Metadata(metadata) : null
   1564       });
   1565       return promise;
   1566     },
   1567     destroy: function PDFDocumentProxy_destroy() {
   1568       this.transport.destroy();
   1569     }
   1570   };
   1571   return PDFDocumentProxy;
   1572 })();
   1573 
   1574 var PDFPageProxy = (function PDFPageProxyClosure() {
   1575   function PDFPageProxy(pageInfo, transport) {
   1576     this.pageInfo = pageInfo;
   1577     this.transport = transport;
   1578     this.stats = new StatTimer();
   1579     this.stats.enabled = !!globalScope.PDFJS.enableStats;
   1580     this.objs = transport.objs;
   1581     this.renderInProgress = false;
   1582   }
   1583   PDFPageProxy.prototype = {
   1584     /**
   1585      * @return {number} Page number of the page. First page is 1.
   1586      */
   1587     get pageNumber() {
   1588       return this.pageInfo.pageIndex + 1;
   1589     },
   1590     /**
   1591      * @return {number} The number of degrees the page is rotated clockwise.
   1592      */
   1593     get rotate() {
   1594       return this.pageInfo.rotate;
   1595     },
   1596     /**
   1597      * @return {object} The reference that points to this page. It has 'num' and
   1598      * 'gen' properties.
   1599      */
   1600     get ref() {
   1601       return this.pageInfo.ref;
   1602     },
   1603     /**
   1604      * @return {array} An array of the visible portion of the PDF page in the
   1605      * user space units - [x1, y1, x2, y2].
   1606      */
   1607     get view() {
   1608       return this.pageInfo.view;
   1609     },
   1610     /**
   1611      * @param {number} scale The desired scale of the viewport.
   1612      * @param {number} rotate Degrees to rotate the viewport. If omitted this
   1613      * defaults to the page rotation.
   1614      * @return {PageViewport} Contains 'width' and 'height' properties along
   1615      * with transforms required for rendering.
   1616      */
   1617     getViewport: function PDFPageProxy_getViewport(scale, rotate) {
   1618       if (arguments.length < 2)
   1619         rotate = this.rotate;
   1620       return new PDFJS.PageViewport(this.view, scale, rotate, 0, 0);
   1621     },
   1622     /**
   1623      * @return {Promise} A promise that is resolved with an {array} of the
   1624      * annotation objects.
   1625      */
   1626     getAnnotations: function PDFPageProxy_getAnnotations() {
   1627       if (this.annotationsPromise)
   1628         return this.annotationsPromise;
   1629 
   1630       var promise = new PDFJS.Promise();
   1631       this.annotationsPromise = promise;
   1632       this.transport.getAnnotations(this.pageInfo.pageIndex);
   1633       return promise;
   1634     },
   1635     /**
   1636      * Begins the process of rendering a page to the desired context.
   1637      * @param {object} params A parameter object that supports:
   1638      * {
   1639      *   canvasContext(required): A 2D context of a DOM Canvas object.,
   1640      *   textLayer(optional): An object that has beginLayout, endLayout, and
   1641      *                        appendText functions.
   1642      * }.
   1643      * @return {Promise} A promise that is resolved when the page finishes
   1644      * rendering.
   1645      */
   1646     render: function PDFPageProxy_render(params) {
   1647       this.renderInProgress = true;
   1648 
   1649       var promise = new Promise();
   1650       var stats = this.stats;
   1651       stats.time('Overall');
   1652       // If there is no displayReadyPromise yet, then the operatorList was never
   1653       // requested before. Make the request and create the promise.
   1654       if (!this.displayReadyPromise) {
   1655         this.displayReadyPromise = new Promise();
   1656         this.destroyed = false;
   1657 
   1658         this.stats.time('Page Request');
   1659         this.transport.messageHandler.send('RenderPageRequest', {
   1660           pageIndex: this.pageNumber - 1
   1661         });
   1662       }
   1663 
   1664       var self = this;
   1665       function complete(error) {
   1666         self.renderInProgress = false;
   1667         if (self.destroyed) {
   1668           delete self.operatorList;
   1669           delete self.displayReadyPromise;
   1670         }
   1671 
   1672         if (error)
   1673           promise.reject(error);
   1674         else
   1675           promise.resolve();
   1676       };
   1677 
   1678       // Once the operatorList and fonts are loaded, do the actual rendering.
   1679       this.displayReadyPromise.then(
   1680         function pageDisplayReadyPromise() {
   1681           if (self.destroyed) {
   1682             complete();
   1683             return;
   1684           }
   1685 
   1686           var gfx = new CanvasGraphics(params.canvasContext,
   1687             this.objs, params.textLayer);
   1688           try {
   1689            this.display(gfx, params.viewport, complete);
   1690           } catch (e) {
   1691             complete(e);
   1692           }
   1693         }.bind(this),
   1694         function pageDisplayReadPromiseError(reason) {
   1695           complete(reason);
   1696         }
   1697       );
   1698 
   1699       return promise;
   1700     },
   1701     /**
   1702      * For internal use only.
   1703      */
   1704     startRenderingFromOperatorList:
   1705       function PDFPageProxy_startRenderingFromOperatorList(operatorList,
   1706                                                            fonts) {
   1707       var self = this;
   1708       this.operatorList = operatorList;
   1709 
   1710       var displayContinuation = function pageDisplayContinuation() {
   1711         // Always defer call to display() to work around bug in
   1712         // Firefox error reporting from XHR callbacks.
   1713         PdfJS_window.setTimeout(function pageSetTimeout() {
   1714           self.displayReadyPromise.resolve();
   1715         });
   1716       };
   1717 
   1718       this.ensureFonts(fonts,
   1719         function pageStartRenderingFromOperatorListEnsureFonts() {
   1720           displayContinuation();
   1721         }
   1722       );
   1723     },
   1724     /**
   1725      * For internal use only.
   1726      */
   1727     ensureFonts: function PDFPageProxy_ensureFonts(fonts, callback) {
   1728       this.stats.time('Font Loading');
   1729       // Convert the font names to the corresponding font obj.
   1730       for (var i = 0, ii = fonts.length; i < ii; i++) {
   1731         fonts[i] = this.objs.objs[fonts[i]].data;
   1732       }
   1733 
   1734       // Load all the fonts
   1735       FontLoader.bind(
   1736         fonts,
   1737         function pageEnsureFontsFontObjs(fontObjs) {
   1738           this.stats.timeEnd('Font Loading');
   1739 
   1740           callback.call(this);
   1741         }.bind(this)
   1742       );
   1743     },
   1744     /**
   1745      * For internal use only.
   1746      */
   1747     display: function PDFPageProxy_display(gfx, viewport, callback) {
   1748       var stats = this.stats;
   1749       stats.time('Rendering');
   1750 
   1751       gfx.beginDrawing(viewport);
   1752 
   1753       var startIdx = 0;
   1754       var length = this.operatorList.fnArray.length;
   1755       var operatorList = this.operatorList;
   1756       var stepper = null;
   1757       if (PDFJS.pdfBug && StepperManager.enabled) {
   1758         stepper = StepperManager.create(this.pageNumber - 1);
   1759         stepper.init(operatorList);
   1760         stepper.nextBreakPoint = stepper.getNextBreakPoint();
   1761       }
   1762 
   1763       var self = this;
   1764       function next() {
   1765         startIdx =
   1766           gfx.executeOperatorList(operatorList, startIdx, next, stepper);
   1767         if (startIdx == length) {
   1768           gfx.endDrawing();
   1769           stats.timeEnd('Rendering');
   1770           stats.timeEnd('Overall');
   1771           if (callback) callback();
   1772         }
   1773       }
   1774       next();
   1775     },
   1776     /**
   1777      * Stub for future feature.
   1778      */
   1779     getTextContent: function PDFPageProxy_getTextContent() {
   1780       var promise = new PDFJS.Promise();
   1781       var textContent = 'page text'; // not implemented
   1782       promise.resolve(textContent);
   1783       return promise;
   1784     },
   1785     /**
   1786      * Stub for future feature.
   1787      */
   1788     getOperationList: function PDFPageProxy_getOperationList() {
   1789       var promise = new PDFJS.Promise();
   1790       var operationList = { // not implemented
   1791         dependencyFontsID: null,
   1792         operatorList: null
   1793       };
   1794       promise.resolve(operationList);
   1795       return promise;
   1796     },
   1797     /**
   1798      * Destroys resources allocated by the page.
   1799      */
   1800     destroy: function PDFPageProxy_destroy() {
   1801       this.destroyed = true;
   1802 
   1803       if (!this.renderInProgress) {
   1804         delete this.operatorList;
   1805         delete this.displayReadyPromise;
   1806       }
   1807     }
   1808   };
   1809   return PDFPageProxy;
   1810 })();
   1811 /**
   1812  * For internal use only.
   1813  */
   1814 var WorkerTransport = (function WorkerTransportClosure() {
   1815   function WorkerTransport(promise) {
   1816     this.workerReadyPromise = promise;
   1817     this.objs = new PDFObjects();
   1818 
   1819     this.pageCache = [];
   1820     this.pagePromises = [];
   1821     this.fontsLoading = {};
   1822 
   1823     // If worker support isn't disabled explicit and the browser has worker
   1824     // support, create a new web worker and test if it/the browser fullfills
   1825     // all requirements to run parts of pdf.js in a web worker.
   1826     // Right now, the requirement is, that an Uint8Array is still an Uint8Array
   1827     // as it arrives on the worker. Chrome added this with version 15.
   1828     if (!globalScope.PDFJS.disableWorker && typeof PdfJS_window.Worker !== 'undefined') {
   1829       var workerSrc = PDFJS.workerSrc;
   1830       if (typeof workerSrc === 'undefined') {
   1831         error('No PDFJS.workerSrc specified');
   1832       }
   1833 
   1834       try {
   1835         var worker;
   1836         if (PDFJS.isFirefoxExtension) {
   1837           // The firefox extension can't load the worker from the resource://
   1838           // url so we have to inline the script and then use the blob loader.
   1839           var bb = new MozBlobBuilder();
   1840           bb.append(PdfJS_window.document.querySelector('#PDFJS_SCRIPT_TAG').textContent);
   1841           var blobUrl = PdfJS_window.window.URL.createObjectURL(bb.getBlob());
   1842           worker = new Worker(blobUrl);
   1843         } else {
   1844           // Some versions of FF can't create a worker on localhost, see:
   1845           // https://bugzilla.mozilla.org/show_bug.cgi?id=683280
   1846           worker = new Worker(workerSrc);
   1847         }
   1848 
   1849         var messageHandler = new MessageHandler('main', worker);
   1850         this.messageHandler = messageHandler;
   1851 
   1852         messageHandler.on('test', function transportTest(supportTypedArray) {
   1853           if (supportTypedArray) {
   1854             this.worker = worker;
   1855             this.setupMessageHandler(messageHandler);
   1856           } else {
   1857             globalScope.PDFJS.disableWorker = true;
   1858             this.setupFakeWorker();
   1859           }
   1860         }.bind(this));
   1861 
   1862         var testObj = new Uint8Array(1);
   1863         // Some versions of Opera throw a DATA_CLONE_ERR on
   1864         // serializing the typed array.
   1865         messageHandler.send('test', testObj);
   1866         return;
   1867       } catch (e) {
   1868         warn('The worker has been disabled.');
   1869       }
   1870     }
   1871     // Either workers are disabled, not supported or have thrown an exception.
   1872     // Thus, we fallback to a faked worker.
   1873     globalScope.PDFJS.disableWorker = true;
   1874     this.setupFakeWorker();
   1875   }
   1876   WorkerTransport.prototype = {
   1877     destroy: function WorkerTransport_destroy() {
   1878       if (this.worker)
   1879         this.worker.terminate();
   1880 
   1881       this.pageCache = [];
   1882       this.pagePromises = [];
   1883     },
   1884     setupFakeWorker: function WorkerTransport_setupFakeWorker() {
   1885       // If we don't use a worker, just post/sendMessage to the main thread.
   1886       var fakeWorker = {
   1887         postMessage: function WorkerTransport_postMessage(obj) {
   1888           fakeWorker.onmessage({data: obj});
   1889         },
   1890         terminate: function WorkerTransport_terminate() {}
   1891       };
   1892 
   1893       var messageHandler = new MessageHandler('main', fakeWorker);
   1894       this.setupMessageHandler(messageHandler);
   1895 
   1896       // If the main thread is our worker, setup the handling for the messages
   1897       // the main thread sends to it self.
   1898       WorkerMessageHandler.setup(messageHandler);
   1899     },
   1900 
   1901     setupMessageHandler:
   1902       function WorkerTransport_setupMessageHandler(messageHandler) {
   1903       this.messageHandler = messageHandler;
   1904 
   1905       messageHandler.on('GetDoc', function transportDoc(data) {
   1906         var pdfInfo = data.pdfInfo;
   1907         var pdfDocument = new PDFDocumentProxy(pdfInfo, this);
   1908         this.pdfDocument = pdfDocument;
   1909         this.workerReadyPromise.resolve(pdfDocument);
   1910       }, this);
   1911 
   1912       messageHandler.on('GetPage', function transportPage(data) {
   1913         var pageInfo = data.pageInfo;
   1914         var page = new PDFPageProxy(pageInfo, this);
   1915         this.pageCache[pageInfo.pageIndex] = page;
   1916         var promise = this.pagePromises[pageInfo.pageIndex];
   1917         promise.resolve(page);
   1918       }, this);
   1919 
   1920       messageHandler.on('GetAnnotations', function transportAnnotations(data) {
   1921         var annotations = data.annotations;
   1922         var promise = this.pageCache[data.pageIndex].annotationsPromise;
   1923         promise.resolve(annotations);
   1924       }, this);
   1925 
   1926       messageHandler.on('RenderPage', function transportRender(data) {
   1927         var page = this.pageCache[data.pageIndex];
   1928         var depFonts = data.depFonts;
   1929 
   1930         page.stats.timeEnd('Page Request');
   1931         page.startRenderingFromOperatorList(data.operatorList, depFonts);
   1932       }, this);
   1933 
   1934       messageHandler.on('obj', function transportObj(data) {
   1935         var id = data[0];
   1936         var type = data[1];
   1937         if (this.objs.hasData(id))
   1938           return;
   1939 
   1940         switch (type) {
   1941           case 'JpegStream':
   1942             var imageData = data[2];
   1943             loadJpegStream(id, imageData, this.objs);
   1944             break;
   1945           case 'Image':
   1946             var imageData = data[2];
   1947             this.objs.resolve(id, imageData);
   1948             break;
   1949           case 'Font':
   1950             var name = data[2];
   1951             var file = data[3];
   1952             var properties = data[4];
   1953 
   1954             if (file) {
   1955               // Rewrap the ArrayBuffer in a stream.
   1956               var fontFileDict = new Dict();
   1957               file = new Stream(file, 0, file.length, fontFileDict);
   1958             }
   1959 
   1960             // At this point, only the font object is created but the font is
   1961             // not yet attached to the DOM. This is done in `FontLoader.bind`.
   1962             var font = new Font(name, file, properties);
   1963             this.objs.resolve(id, font);
   1964             break;
   1965           default:
   1966             error('Got unkown object type ' + type);
   1967         }
   1968       }, this);
   1969 
   1970       messageHandler.on('PageError', function transportError(data) {
   1971         var page = this.pageCache[data.pageNum - 1];
   1972         if (page.displayReadyPromise)
   1973           page.displayReadyPromise.reject(data.error);
   1974         else
   1975           error(data.error);
   1976       }, this);
   1977 
   1978       messageHandler.on('JpegDecode', function(data, promise) {
   1979         var imageData = data[0];
   1980         var components = data[1];
   1981         if (components != 3 && components != 1)
   1982           error('Only 3 component or 1 component can be returned');
   1983 
   1984         var img = new Image();
   1985         img.onload = (function messageHandler_onloadClosure() {
   1986           var width = img.width;
   1987           var height = img.height;
   1988           var size = width * height;
   1989           var rgbaLength = size * 4;
   1990           var buf = new Uint8Array(size * components);
   1991           var tmpCanvas = createScratchCanvas(width, height);
   1992           var tmpCtx = tmpCanvas.getContext('2d');
   1993           tmpCtx.drawImage(img, 0, 0);
   1994           var data = tmpCtx.getImageData(0, 0, width, height).data;
   1995 
   1996           if (components == 3) {
   1997             for (var i = 0, j = 0; i < rgbaLength; i += 4, j += 3) {
   1998               buf[j] = data[i];
   1999               buf[j + 1] = data[i + 1];
   2000               buf[j + 2] = data[i + 2];
   2001             }
   2002           } else if (components == 1) {
   2003             for (var i = 0, j = 0; i < rgbaLength; i += 4, j++) {
   2004               buf[j] = data[i];
   2005             }
   2006           }
   2007           promise.resolve({ data: buf, width: width, height: height});
   2008         }).bind(this);
   2009         var src = 'data:image/jpeg;base64,' + PdfJS_window.window.btoa(imageData);
   2010         img.src = src;
   2011       });
   2012     },
   2013 
   2014     sendData: function WorkerTransport_sendData(data) {
   2015       this.messageHandler.send('GetDocRequest', data);
   2016     },
   2017 
   2018     getPage: function WorkerTransport_getPage(pageNumber, promise) {
   2019       var pageIndex = pageNumber - 1;
   2020       if (pageIndex in this.pagePromises)
   2021         return this.pagePromises[pageIndex];
   2022       var promise = new PDFJS.Promise('Page ' + pageNumber);
   2023       this.pagePromises[pageIndex] = promise;
   2024       this.messageHandler.send('GetPageRequest', { pageIndex: pageIndex });
   2025       return promise;
   2026     },
   2027 
   2028     getAnnotations: function WorkerTransport_getAnnotations(pageIndex) {
   2029       this.messageHandler.send('GetAnnotationsRequest',
   2030         { pageIndex: pageIndex });
   2031     }
   2032   };
   2033   return WorkerTransport;
   2034 
   2035 })();
   2036 
   2037 /* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
   2038 /* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */
   2039 
   2040 'use strict';
   2041 
   2042 // <canvas> contexts store most of the state we need natively.
   2043 // However, PDF needs a bit more state, which we store here.
   2044 
   2045 var TextRenderingMode = {
   2046   FILL: 0,
   2047   STROKE: 1,
   2048   FILL_STROKE: 2,
   2049   INVISIBLE: 3,
   2050   FILL_ADD_TO_PATH: 4,
   2051   STROKE_ADD_TO_PATH: 5,
   2052   FILL_STROKE_ADD_TO_PATH: 6,
   2053   ADD_TO_PATH: 7
   2054 };
   2055 
   2056 // Minimal font size that would be used during canvas fillText operations.
   2057 var MIN_FONT_SIZE = 1;
   2058 
   2059 function createScratchCanvas(width, height) {
   2060   var canvas = PdfJS_window.document.createElement('canvas');
   2061   canvas.width = width;
   2062   canvas.height = height;
   2063   return canvas;
   2064 }
   2065 
   2066 function addContextCurrentTransform(ctx) {
   2067   // If the context doesn't expose a `mozCurrentTransform`, add a JS based on.
   2068   if (!ctx.mozCurrentTransform) {
   2069     // Store the original context
   2070     ctx._originalSave = ctx.save;
   2071     ctx._originalRestore = ctx.restore;
   2072     ctx._originalRotate = ctx.rotate;
   2073     ctx._originalScale = ctx.scale;
   2074     ctx._originalTranslate = ctx.translate;
   2075     ctx._originalTransform = ctx.transform;
   2076 
   2077     ctx._transformMatrix = [1, 0, 0, 1, 0, 0];
   2078     ctx._transformStack = [];
   2079 
   2080     Object.defineProperty(ctx, 'mozCurrentTransform', {
   2081       get: function getCurrentTransform() {
   2082         return this._transformMatrix;
   2083       }
   2084     });
   2085 
   2086     Object.defineProperty(ctx, 'mozCurrentTransformInverse', {
   2087       get: function getCurrentTransformInverse() {
   2088         // Calculation done using WolframAlpha:
   2089         // http://www.wolframalpha.com/input/?
   2090         //   i=Inverse+{{a%2C+c%2C+e}%2C+{b%2C+d%2C+f}%2C+{0%2C+0%2C+1}}
   2091 
   2092         var m = this._transformMatrix;
   2093         var a = m[0], b = m[1], c = m[2], d = m[3], e = m[4], f = m[5];
   2094 
   2095         var ad_bc = a * d - b * c;
   2096         var bc_ad = b * c - a * d;
   2097 
   2098         return [
   2099           d / ad_bc,
   2100           b / bc_ad,
   2101           c / bc_ad,
   2102           a / ad_bc,
   2103           (d * e - c * f) / bc_ad,
   2104           (b * e - a * f) / ad_bc
   2105         ];
   2106       }
   2107     });
   2108 
   2109     ctx.save = function ctxSave() {
   2110       var old = this._transformMatrix;
   2111       this._transformStack.push(old);
   2112       this._transformMatrix = old.slice(0, 6);
   2113 
   2114       this._originalSave();
   2115     };
   2116 
   2117     ctx.restore = function ctxRestore() {
   2118       var prev = this._transformStack.pop();
   2119       if (prev) {
   2120         this._transformMatrix = prev;
   2121         this._originalRestore();
   2122       }
   2123     };
   2124 
   2125     ctx.translate = function ctxTranslate(x, y) {
   2126       var m = this._transformMatrix;
   2127       m[4] = m[0] * x + m[2] * y + m[4];
   2128       m[5] = m[1] * x + m[3] * y + m[5];
   2129 
   2130       this._originalTranslate(x, y);
   2131     };
   2132 
   2133     ctx.scale = function ctxScale(x, y) {
   2134       var m = this._transformMatrix;
   2135       m[0] = m[0] * x;
   2136       m[1] = m[1] * x;
   2137       m[2] = m[2] * y;
   2138       m[3] = m[3] * y;
   2139 
   2140       this._originalScale(x, y);
   2141     };
   2142 
   2143     ctx.transform = function ctxTransform(a, b, c, d, e, f) {
   2144       var m = this._transformMatrix;
   2145       this._transformMatrix = [
   2146         m[0] * a + m[2] * b,
   2147         m[1] * a + m[3] * b,
   2148         m[0] * c + m[2] * d,
   2149         m[1] * c + m[3] * d,
   2150         m[0] * e + m[2] * f + m[4],
   2151         m[1] * e + m[3] * f + m[5]
   2152       ];
   2153 
   2154       ctx._originalTransform(a, b, c, d, e, f);
   2155     };
   2156 
   2157     ctx.rotate = function ctxRotate(angle) {
   2158       var cosValue = Math.cos(angle);
   2159       var sinValue = Math.sin(angle);
   2160 
   2161       var m = this._transformMatrix;
   2162       this._transformMatrix = [
   2163         m[0] * cosValue + m[2] * sinValue,
   2164         m[1] * cosValue + m[3] * sinValue,
   2165         m[0] * (-sinValue) + m[2] * cosValue,
   2166         m[1] * (-sinValue) + m[3] * cosValue,
   2167         m[4],
   2168         m[5]
   2169       ];
   2170 
   2171       this._originalRotate(angle);
   2172     };
   2173   }
   2174 }
   2175 
   2176 var CanvasExtraState = (function CanvasExtraStateClosure() {
   2177   function CanvasExtraState(old) {
   2178     // Are soft masks and alpha values shapes or opacities?
   2179     this.alphaIsShape = false;
   2180     this.fontSize = 0;
   2181     this.fontSizeScale = 1;
   2182     this.textMatrix = IDENTITY_MATRIX;
   2183     this.fontMatrix = IDENTITY_MATRIX;
   2184     this.leading = 0;
   2185     // Current point (in user coordinates)
   2186     this.x = 0;
   2187     this.y = 0;
   2188     // Start of text line (in text coordinates)
   2189     this.lineX = 0;
   2190     this.lineY = 0;
   2191     // Character and word spacing
   2192     this.charSpacing = 0;
   2193     this.wordSpacing = 0;
   2194     this.textHScale = 1;
   2195     this.textRenderingMode = TextRenderingMode.FILL;
   2196     // Color spaces
   2197     this.fillColorSpace = new DeviceGrayCS();
   2198     this.fillColorSpaceObj = null;
   2199     this.strokeColorSpace = new DeviceGrayCS();
   2200     this.strokeColorSpaceObj = null;
   2201     this.fillColorObj = null;
   2202     this.strokeColorObj = null;
   2203     // Default fore and background colors
   2204     this.fillColor = '#000000';
   2205     this.strokeColor = '#000000';
   2206     // Note: fill alpha applies to all non-stroking operations
   2207     this.fillAlpha = 1;
   2208     this.strokeAlpha = 1;
   2209     this.lineWidth = 1;
   2210 
   2211     this.old = old;
   2212   }
   2213 
   2214   CanvasExtraState.prototype = {
   2215     clone: function CanvasExtraState_clone() {
   2216       return Object.create(this);
   2217     },
   2218     setCurrentPoint: function CanvasExtraState_setCurrentPoint(x, y) {
   2219       this.x = x;
   2220       this.y = y;
   2221     }
   2222   };
   2223   return CanvasExtraState;
   2224 })();
   2225 
   2226 var CanvasGraphics = (function CanvasGraphicsClosure() {
   2227   // Defines the time the executeOperatorList is going to be executing
   2228   // before it stops and shedules a continue of execution.
   2229   var kExecutionTime = 15;
   2230 
   2231   function CanvasGraphics(canvasCtx, objs, textLayer) {
   2232     this.ctx = canvasCtx;
   2233     this.current = new CanvasExtraState();
   2234     this.stateStack = [];
   2235     this.pendingClip = null;
   2236     this.res = null;
   2237     this.xobjs = null;
   2238     this.objs = objs;
   2239     this.textLayer = textLayer;
   2240     if (canvasCtx) {
   2241       addContextCurrentTransform(canvasCtx);
   2242     }
   2243   }
   2244 
   2245   var LINE_CAP_STYLES = ['butt', 'round', 'square'];
   2246   var LINE_JOIN_STYLES = ['miter', 'round', 'bevel'];
   2247   var NORMAL_CLIP = {};
   2248   var EO_CLIP = {};
   2249 
   2250   CanvasGraphics.prototype = {
   2251     slowCommands: {
   2252       'stroke': true,
   2253       'closeStroke': true,
   2254       'fill': true,
   2255       'eoFill': true,
   2256       'fillStroke': true,
   2257       'eoFillStroke': true,
   2258       'closeFillStroke': true,
   2259       'closeEOFillStroke': true,
   2260       'showText': true,
   2261       'showSpacedText': true,
   2262       'setStrokeColorSpace': true,
   2263       'setFillColorSpace': true,
   2264       'setStrokeColor': true,
   2265       'setStrokeColorN': true,
   2266       'setFillColor': true,
   2267       'setFillColorN': true,
   2268       'setStrokeGray': true,
   2269       'setFillGray': true,
   2270       'setStrokeRGBColor': true,
   2271       'setFillRGBColor': true,
   2272       'setStrokeCMYKColor': true,
   2273       'setFillCMYKColor': true,
   2274       'paintJpegXObject': true,
   2275       'paintImageXObject': true,
   2276       'paintImageMaskXObject': true,
   2277       'shadingFill': true
   2278     },
   2279 
   2280     beginDrawing: function CanvasGraphics_beginDrawing(viewport) {
   2281       var transform = viewport.transform;
   2282       this.ctx.save();
   2283       this.ctx.transform.apply(this.ctx, transform);
   2284 
   2285       if (this.textLayer)
   2286         this.textLayer.beginLayout();
   2287     },
   2288 
   2289     executeOperatorList: function CanvasGraphics_executeOperatorList(
   2290                                     operatorList,
   2291                                     executionStartIdx, continueCallback,
   2292                                     stepper) {
   2293       var argsArray = operatorList.argsArray;
   2294       var fnArray = operatorList.fnArray;
   2295       var i = executionStartIdx || 0;
   2296       var argsArrayLen = argsArray.length;
   2297 
   2298       // Sometimes the OperatorList to execute is empty.
   2299       if (argsArrayLen == i) {
   2300         return i;
   2301       }
   2302 
   2303       var executionEndIdx;
   2304       var endTime = Date.now() + kExecutionTime;
   2305 
   2306       var objs = this.objs;
   2307       var fnName;
   2308       var slowCommands = this.slowCommands;
   2309 
   2310       while (true) {
   2311         if (stepper && i === stepper.nextBreakPoint) {
   2312           stepper.breakIt(i, continueCallback);
   2313           return i;
   2314         }
   2315 
   2316         fnName = fnArray[i];
   2317 
   2318         if (fnName !== 'dependency') {
   2319           this[fnName].apply(this, argsArray[i]);
   2320         } else {
   2321           var deps = argsArray[i];
   2322           for (var n = 0, nn = deps.length; n < nn; n++) {
   2323             var depObjId = deps[n];
   2324 
   2325             // If the promise isn't resolved yet, add the continueCallback
   2326             // to the promise and bail out.
   2327             if (!objs.isResolved(depObjId)) {
   2328               objs.get(depObjId, continueCallback);
   2329               return i;
   2330             }
   2331           }
   2332         }
   2333 
   2334         i++;
   2335 
   2336         // If the entire operatorList was executed, stop as were done.
   2337         if (i == argsArrayLen) {
   2338           return i;
   2339         }
   2340 
   2341         // If the execution took longer then a certain amount of time, shedule
   2342         // to continue exeution after a short delay.
   2343         // However, this is only possible if a 'continueCallback' is passed in.
   2344         if (continueCallback && slowCommands[fnName] && Date.now() > endTime) {
   2345           PdfJS_window.setTimeout(continueCallback, 0);
   2346           return i;
   2347         }
   2348 
   2349         // If the operatorList isn't executed completely yet OR the execution
   2350         // time was short enough, do another execution round.
   2351       }
   2352     },
   2353 
   2354     endDrawing: function CanvasGraphics_endDrawing() {
   2355       this.ctx.restore();
   2356 
   2357       if (this.textLayer)
   2358         this.textLayer.endLayout();
   2359     },
   2360 
   2361     // Graphics state
   2362     setLineWidth: function CanvasGraphics_setLineWidth(width) {
   2363       this.current.lineWidth = width;
   2364       this.ctx.lineWidth = width;
   2365     },
   2366     setLineCap: function CanvasGraphics_setLineCap(style) {
   2367       this.ctx.lineCap = LINE_CAP_STYLES[style];
   2368     },
   2369     setLineJoin: function CanvasGraphics_setLineJoin(style) {
   2370       this.ctx.lineJoin = LINE_JOIN_STYLES[style];
   2371     },
   2372     setMiterLimit: function CanvasGraphics_setMiterLimit(limit) {
   2373       this.ctx.miterLimit = limit;
   2374     },
   2375     setDash: function CanvasGraphics_setDash(dashArray, dashPhase) {
   2376       this.ctx.mozDash = dashArray;
   2377       this.ctx.mozDashOffset = dashPhase;
   2378       this.ctx.webkitLineDash = dashArray;
   2379       this.ctx.webkitLineDashOffset = dashPhase;
   2380     },
   2381     setRenderingIntent: function CanvasGraphics_setRenderingIntent(intent) {
   2382       TODO('set rendering intent: ' + intent);
   2383     },
   2384     setFlatness: function CanvasGraphics_setFlatness(flatness) {
   2385       TODO('set flatness: ' + flatness);
   2386     },
   2387     setGState: function CanvasGraphics_setGState(states) {
   2388       for (var i = 0, ii = states.length; i < ii; i++) {
   2389         var state = states[i];
   2390         var key = state[0];
   2391         var value = state[1];
   2392 
   2393         switch (key) {
   2394           case 'LW':
   2395             this.setLineWidth(value);
   2396             break;
   2397           case 'LC':
   2398             this.setLineCap(value);
   2399             break;
   2400           case 'LJ':
   2401             this.setLineJoin(value);
   2402             break;
   2403           case 'ML':
   2404             this.setMiterLimit(value);
   2405             break;
   2406           case 'D':
   2407             this.setDash(value[0], value[1]);
   2408             break;
   2409           case 'RI':
   2410             this.setRenderingIntent(value);
   2411             break;
   2412           case 'FL':
   2413             this.setFlatness(value);
   2414             break;
   2415           case 'Font':
   2416             this.setFont(state[1], state[2]);
   2417             break;
   2418           case 'CA':
   2419             this.current.strokeAlpha = state[1];
   2420             break;
   2421           case 'ca':
   2422             this.current.fillAlpha = state[1];
   2423             this.ctx.globalAlpha = state[1];
   2424             break;
   2425         }
   2426       }
   2427     },
   2428     save: function CanvasGraphics_save() {
   2429       this.ctx.save();
   2430       var old = this.current;
   2431       this.stateStack.push(old);
   2432       this.current = old.clone();
   2433     },
   2434     restore: function CanvasGraphics_restore() {
   2435       var prev = this.stateStack.pop();
   2436       if (prev) {
   2437         this.current = prev;
   2438         this.ctx.restore();
   2439       }
   2440     },
   2441     transform: function CanvasGraphics_transform(a, b, c, d, e, f) {
   2442       this.ctx.transform(a, b, c, d, e, f);
   2443     },
   2444 
   2445     // Path
   2446     moveTo: function CanvasGraphics_moveTo(x, y) {
   2447       this.ctx.moveTo(x, y);
   2448       this.current.setCurrentPoint(x, y);
   2449     },
   2450     lineTo: function CanvasGraphics_lineTo(x, y) {
   2451       this.ctx.lineTo(x, y);
   2452       this.current.setCurrentPoint(x, y);
   2453     },
   2454     curveTo: function CanvasGraphics_curveTo(x1, y1, x2, y2, x3, y3) {
   2455       this.ctx.bezierCurveTo(x1, y1, x2, y2, x3, y3);
   2456       this.current.setCurrentPoint(x3, y3);
   2457     },
   2458     curveTo2: function CanvasGraphics_curveTo2(x2, y2, x3, y3) {
   2459       var current = this.current;
   2460       this.ctx.bezierCurveTo(current.x, current.y, x2, y2, x3, y3);
   2461       current.setCurrentPoint(x3, y3);
   2462     },
   2463     curveTo3: function CanvasGraphics_curveTo3(x1, y1, x3, y3) {
   2464       this.curveTo(x1, y1, x3, y3, x3, y3);
   2465       this.current.setCurrentPoint(x3, y3);
   2466     },
   2467     closePath: function CanvasGraphics_closePath() {
   2468       this.ctx.closePath();
   2469     },
   2470     rectangle: function CanvasGraphics_rectangle(x, y, width, height) {
   2471       this.ctx.rect(x, y, width, height);
   2472     },
   2473     stroke: function CanvasGraphics_stroke(consumePath) {
   2474       consumePath = typeof consumePath !== 'undefined' ? consumePath : true;
   2475       var ctx = this.ctx;
   2476       var strokeColor = this.current.strokeColor;
   2477       if (this.current.lineWidth === 0)
   2478         ctx.lineWidth = this.getSinglePixelWidth();
   2479       // For stroke we want to temporarily change the global alpha to the
   2480       // stroking alpha.
   2481       ctx.globalAlpha = this.current.strokeAlpha;
   2482       if (strokeColor && strokeColor.hasOwnProperty('type') &&
   2483           strokeColor.type === 'Pattern') {
   2484         // for patterns, we transform to pattern space, calculate
   2485         // the pattern, call stroke, and restore to user space
   2486         ctx.save();
   2487         ctx.strokeStyle = strokeColor.getPattern(ctx);
   2488         ctx.stroke();
   2489         ctx.restore();
   2490       } else {
   2491         ctx.stroke();
   2492       }
   2493       if (consumePath)
   2494         this.consumePath();
   2495       // Restore the global alpha to the fill alpha
   2496       ctx.globalAlpha = this.current.fillAlpha;
   2497     },
   2498     closeStroke: function CanvasGraphics_closeStroke() {
   2499       this.closePath();
   2500       this.stroke();
   2501     },
   2502     fill: function CanvasGraphics_fill(consumePath) {
   2503       consumePath = typeof consumePath !== 'undefined' ? consumePath : true;
   2504       var ctx = this.ctx;
   2505       var fillColor = this.current.fillColor;
   2506 
   2507       if (fillColor && fillColor.hasOwnProperty('type') &&
   2508           fillColor.type === 'Pattern') {
   2509         ctx.save();
   2510         ctx.fillStyle = fillColor.getPattern(ctx);
   2511         ctx.fill();
   2512         ctx.restore();
   2513       } else {
   2514         ctx.fill();
   2515       }
   2516       if (consumePath)
   2517         this.consumePath();
   2518     },
   2519     eoFill: function CanvasGraphics_eoFill() {
   2520       var savedFillRule = this.setEOFillRule();
   2521       this.fill();
   2522       this.restoreFillRule(savedFillRule);
   2523     },
   2524     fillStroke: function CanvasGraphics_fillStroke() {
   2525       this.fill(false);
   2526       this.stroke(false);
   2527 
   2528       this.consumePath();
   2529     },
   2530     eoFillStroke: function CanvasGraphics_eoFillStroke() {
   2531       var savedFillRule = this.setEOFillRule();
   2532       this.fillStroke();
   2533       this.restoreFillRule(savedFillRule);
   2534     },
   2535     closeFillStroke: function CanvasGraphics_closeFillStroke() {
   2536       this.closePath();
   2537       this.fillStroke();
   2538     },
   2539     closeEOFillStroke: function CanvasGraphics_closeEOFillStroke() {
   2540       var savedFillRule = this.setEOFillRule();
   2541       this.closePath();
   2542       this.fillStroke();
   2543       this.restoreFillRule(savedFillRule);
   2544     },
   2545     endPath: function CanvasGraphics_endPath() {
   2546       this.consumePath();
   2547     },
   2548 
   2549     // Clipping
   2550     clip: function CanvasGraphics_clip() {
   2551       this.pendingClip = NORMAL_CLIP;
   2552     },
   2553     eoClip: function CanvasGraphics_eoClip() {
   2554       this.pendingClip = EO_CLIP;
   2555     },
   2556 
   2557     // Text
   2558     beginText: function CanvasGraphics_beginText() {
   2559       this.current.textMatrix = IDENTITY_MATRIX;
   2560       this.current.x = this.current.lineX = 0;
   2561       this.current.y = this.current.lineY = 0;
   2562     },
   2563     endText: function CanvasGraphics_endText() {
   2564     },
   2565     setCharSpacing: function CanvasGraphics_setCharSpacing(spacing) {
   2566       this.current.charSpacing = spacing;
   2567     },
   2568     setWordSpacing: function CanvasGraphics_setWordSpacing(spacing) {
   2569       this.current.wordSpacing = spacing;
   2570     },
   2571     setHScale: function CanvasGraphics_setHScale(scale) {
   2572       this.current.textHScale = scale / 100;
   2573     },
   2574     setLeading: function CanvasGraphics_setLeading(leading) {
   2575       this.current.leading = -leading;
   2576     },
   2577     setFont: function CanvasGraphics_setFont(fontRefName, size) {
   2578       var fontObj = this.objs.get(fontRefName);
   2579       var current = this.current;
   2580 
   2581       if (!fontObj)
   2582         error('Can\'t find font for ' + fontRefName);
   2583 
   2584       // Slice-clone matrix so we can manipulate it without affecting original
   2585       if (fontObj.fontMatrix)
   2586         current.fontMatrix = fontObj.fontMatrix.slice(0);
   2587       else
   2588         current.fontMatrix = IDENTITY_MATRIX.slice(0);
   2589 
   2590       // A valid matrix needs all main diagonal elements to be non-zero
   2591       // This also ensures we bypass FF bugzilla bug #719844.
   2592       if (current.fontMatrix[0] === 0 ||
   2593           current.fontMatrix[3] === 0) {
   2594         warn('Invalid font matrix for font ' + fontRefName);
   2595       }
   2596 
   2597       // The spec for Tf (setFont) says that 'size' specifies the font 'scale',
   2598       // and in some docs this can be negative (inverted x-y axes).
   2599       // We implement this condition with fontMatrix.
   2600       if (size < 0) {
   2601         size = -size;
   2602         current.fontMatrix[0] *= -1;
   2603         current.fontMatrix[3] *= -1;
   2604       }
   2605 
   2606       this.current.font = fontObj;
   2607       this.current.fontSize = size;
   2608 
   2609       if (fontObj.coded)
   2610         return; // we don't need ctx.font for Type3 fonts
   2611 
   2612       var name = fontObj.loadedName || 'sans-serif';
   2613       var bold = fontObj.black ? (fontObj.bold ? 'bolder' : 'bold') :
   2614                                  (fontObj.bold ? 'bold' : 'normal');
   2615 
   2616       var italic = fontObj.italic ? 'italic' : 'normal';
   2617       var serif = fontObj.isSerifFont ? 'serif' : 'sans-serif';
   2618       var typeface = '"' + name + '", ' + serif;
   2619 
   2620       // Some font backends cannot handle fonts below certain size.
   2621       // Keeping the font at minimal size and using the fontSizeScale to change
   2622       // the current transformation matrix before the fillText/strokeText.
   2623       // See https://bugzilla.mozilla.org/show_bug.cgi?id=726227
   2624       var browserFontSize = size >= MIN_FONT_SIZE ? size : MIN_FONT_SIZE;
   2625       this.current.fontSizeScale = browserFontSize != MIN_FONT_SIZE ? 1.0 :
   2626                                    size / MIN_FONT_SIZE;
   2627 
   2628       var rule = italic + ' ' + bold + ' ' + browserFontSize + 'px ' + typeface;
   2629       this.ctx.font = rule;
   2630     },
   2631     setTextRenderingMode: function CanvasGraphics_setTextRenderingMode(mode) {
   2632       if (mode >= TextRenderingMode.FILL_ADD_TO_PATH)
   2633         TODO('unsupported text rendering mode: ' + mode);
   2634       this.current.textRenderingMode = mode;
   2635     },
   2636     setTextRise: function CanvasGraphics_setTextRise(rise) {
   2637       TODO('text rise: ' + rise);
   2638     },
   2639     moveText: function CanvasGraphics_moveText(x, y) {
   2640       this.current.x = this.current.lineX += x;
   2641       this.current.y = this.current.lineY += y;
   2642     },
   2643     setLeadingMoveText: function CanvasGraphics_setLeadingMoveText(x, y) {
   2644       this.setLeading(-y);
   2645       this.moveText(x, y);
   2646     },
   2647     setTextMatrix: function CanvasGraphics_setTextMatrix(a, b, c, d, e, f) {
   2648       this.current.textMatrix = [a, b, c, d, e, f];
   2649 
   2650       this.current.x = this.current.lineX = 0;
   2651       this.current.y = this.current.lineY = 0;
   2652     },
   2653     nextLine: function CanvasGraphics_nextLine() {
   2654       this.moveText(0, this.current.leading);
   2655     },
   2656     applyTextTransforms: function CanvasGraphics_applyTextTransforms() {
   2657       var ctx = this.ctx;
   2658       var current = this.current;
   2659       var textHScale = current.textHScale;
   2660       var fontMatrix = current.fontMatrix || IDENTITY_MATRIX;
   2661 
   2662       ctx.transform.apply(ctx, current.textMatrix);
   2663       ctx.scale(1, -1);
   2664       ctx.translate(current.x, -1 * current.y);
   2665       ctx.transform.apply(ctx, fontMatrix);
   2666       ctx.scale(textHScale, 1);
   2667     },
   2668     getTextGeometry: function CanvasGraphics_getTextGeometry() {
   2669       var geometry = {};
   2670       var ctx = this.ctx;
   2671       var font = this.current.font;
   2672       var ctxMatrix = ctx.mozCurrentTransform;
   2673       if (ctxMatrix) {
   2674         var bl = Util.applyTransform([0, 0], ctxMatrix);
   2675         var tr = Util.applyTransform([1, 1], ctxMatrix);
   2676         geometry.x = bl[0];
   2677         geometry.y = bl[1];
   2678         geometry.hScale = tr[0] - bl[0];
   2679         geometry.vScale = tr[1] - bl[1];
   2680       }
   2681       geometry.spaceWidth = font.spaceWidth;
   2682       return geometry;
   2683     },
   2684 
   2685     showText: function CanvasGraphics_showText(str, skipTextSelection) {
   2686       var ctx = this.ctx;
   2687       var current = this.current;
   2688       var font = current.font;
   2689       var glyphs = font.charsToGlyphs(str);
   2690       var fontSize = current.fontSize;
   2691       var fontSizeScale = current.fontSizeScale;
   2692       var charSpacing = current.charSpacing;
   2693       var wordSpacing = current.wordSpacing;
   2694       var textHScale = current.textHScale;
   2695       var fontMatrix = current.fontMatrix || IDENTITY_MATRIX;
   2696       var textHScale2 = textHScale * fontMatrix[0];
   2697       var glyphsLength = glyphs.length;
   2698       var textLayer = this.textLayer;
   2699       var text = {str: '', length: 0, canvasWidth: 0, geom: {}};
   2700       var textSelection = textLayer && !skipTextSelection ? true : false;
   2701       var textRenderingMode = current.textRenderingMode;
   2702 
   2703       // Type3 fonts - each glyph is a "mini-PDF"
   2704       if (font.coded) {
   2705         ctx.save();
   2706         ctx.transform.apply(ctx, current.textMatrix);
   2707         ctx.translate(current.x, current.y);
   2708 
   2709         ctx.scale(textHScale, 1);
   2710 
   2711         if (textSelection) {
   2712           this.save();
   2713           ctx.scale(1, -1);
   2714           text.geom = this.getTextGeometry();
   2715           this.restore();
   2716         }
   2717         for (var i = 0; i < glyphsLength; ++i) {
   2718 
   2719           var glyph = glyphs[i];
   2720           if (glyph === null) {
   2721             // word break
   2722             this.ctx.translate(wordSpacing, 0);
   2723             continue;
   2724           }
   2725 
   2726           this.save();
   2727           ctx.scale(fontSize, fontSize);
   2728           ctx.transform.apply(ctx, fontMatrix);
   2729           this.executeOperatorList(glyph.operatorList);
   2730           this.restore();
   2731 
   2732           var transformed = Util.applyTransform([glyph.width, 0], fontMatrix);
   2733           var width = transformed[0] * fontSize +
   2734               Util.sign(current.fontMatrix[0]) * charSpacing;
   2735 
   2736           ctx.translate(width, 0);
   2737           current.x += width * textHScale;
   2738 
   2739           text.str += glyph.unicode;
   2740           text.length++;
   2741           text.canvasWidth += width;
   2742         }
   2743         ctx.restore();
   2744       } else {
   2745         ctx.save();
   2746         this.applyTextTransforms();
   2747 
   2748         var lineWidth = current.lineWidth;
   2749         var scale = Math.abs(current.textMatrix[0] * fontMatrix[0]);
   2750         if (scale == 0 || lineWidth == 0)
   2751           lineWidth = this.getSinglePixelWidth();
   2752         else
   2753           lineWidth /= scale;
   2754 
   2755         if (textSelection)
   2756           text.geom = this.getTextGeometry();
   2757 
   2758         if (fontSizeScale != 1.0) {
   2759           ctx.scale(fontSizeScale, fontSizeScale);
   2760           lineWidth /= fontSizeScale;
   2761         }
   2762 
   2763         ctx.lineWidth = lineWidth;
   2764 
   2765         var x = 0;
   2766         for (var i = 0; i < glyphsLength; ++i) {
   2767           var glyph = glyphs[i];
   2768           if (glyph === null) {
   2769             // word break
   2770             x += Util.sign(current.fontMatrix[0]) * wordSpacing;
   2771             continue;
   2772           }
   2773 
   2774           var character = glyph.fontChar;
   2775           var charWidth = glyph.width * fontSize * 0.001 +
   2776               Util.sign(current.fontMatrix[0]) * charSpacing;
   2777 
   2778           if (!glyph.disabled) {
   2779             var scaledX = x / fontSizeScale;
   2780             switch (textRenderingMode) {
   2781               default: // other unsupported rendering modes
   2782               case TextRenderingMode.FILL:
   2783               case TextRenderingMode.FILL_ADD_TO_PATH:
   2784                 ctx.fillText(character, scaledX, 0);
   2785                 break;
   2786               case TextRenderingMode.STROKE:
   2787               case TextRenderingMode.STROKE_ADD_TO_PATH:
   2788                 ctx.strokeText(character, scaledX, 0);
   2789                 break;
   2790               case TextRenderingMode.FILL_STROKE:
   2791               case TextRenderingMode.FILL_STROKE_ADD_TO_PATH:
   2792                 ctx.fillText(character, scaledX, 0);
   2793                 ctx.strokeText(character, scaledX, 0);
   2794                 break;
   2795               case TextRenderingMode.INVISIBLE:
   2796                 break;
   2797             }
   2798           }
   2799 
   2800           x += charWidth;
   2801 
   2802           var glyphUnicode = glyph.unicode === ' ' ? '\u00A0' : glyph.unicode;
   2803           var glyphUnicodeLength = glyphUnicode.length;
   2804           //reverse an arabic ligature
   2805           if (glyphUnicodeLength > 1 &&
   2806               isRTLRangeFor(glyphUnicode.charCodeAt(0))) {
   2807             for (var ii = glyphUnicodeLength - 1; ii >= 0; ii--)
   2808               text.str += glyphUnicode[ii];
   2809           } else
   2810             text.str += glyphUnicode;
   2811           text.length += glyphUnicodeLength;
   2812           text.canvasWidth += charWidth;
   2813         }
   2814         current.x += x * textHScale2;
   2815         ctx.restore();
   2816       }
   2817 
   2818       if (textSelection)
   2819         this.textLayer.appendText(text, font.loadedName, fontSize);
   2820 
   2821       return text;
   2822     },
   2823     showSpacedText: function CanvasGraphics_showSpacedText(arr) {
   2824       var ctx = this.ctx;
   2825       var current = this.current;
   2826       var font = current.font;
   2827       var fontSize = current.fontSize;
   2828       var textHScale = current.textHScale;
   2829       if (!font.coded)
   2830         textHScale *= (current.fontMatrix || IDENTITY_MATRIX)[0];
   2831       var arrLength = arr.length;
   2832       var textLayer = this.textLayer;
   2833       var text = {str: '', length: 0, canvasWidth: 0, geom: {}};
   2834       var textSelection = textLayer ? true : false;
   2835 
   2836       if (textSelection) {
   2837         ctx.save();
   2838         // Type3 fonts - each glyph is a "mini-PDF" (see also showText)
   2839         if (font.coded) {
   2840           ctx.transform.apply(ctx, current.textMatrix);
   2841           ctx.scale(1, -1);
   2842           ctx.translate(current.x, -1 * current.y);
   2843           ctx.scale(textHScale, 1);
   2844         } else
   2845           this.applyTextTransforms();
   2846         text.geom = this.getTextGeometry();
   2847         ctx.restore();
   2848       }
   2849 
   2850       for (var i = 0; i < arrLength; ++i) {
   2851         var e = arr[i];
   2852         if (isNum(e)) {
   2853           var spacingLength = -e * 0.001 * fontSize * textHScale;
   2854           current.x += spacingLength;
   2855 
   2856           if (textSelection) {
   2857             // Emulate precise spacing via HTML spaces
   2858             text.canvasWidth += spacingLength;
   2859             if (e < 0 && text.geom.spaceWidth > 0) { // avoid div by zero
   2860               var numFakeSpaces = Math.round(-e / text.geom.spaceWidth);
   2861               if (numFakeSpaces > 0) {
   2862                 text.str += '\u00A0';
   2863                 text.length++;
   2864               }
   2865             }
   2866           }
   2867         } else if (isString(e)) {
   2868           var shownText = this.showText(e, true);
   2869 
   2870           if (textSelection) {
   2871             if (shownText.str === ' ') {
   2872               text.str += '\u00A0';
   2873             } else {
   2874               text.str += shownText.str;
   2875             }
   2876             text.canvasWidth += shownText.canvasWidth;
   2877             text.length += shownText.length;
   2878           }
   2879         } else {
   2880           malformed('TJ array element ' + e + ' is not string or num');
   2881         }
   2882       }
   2883 
   2884       if (textSelection)
   2885         this.textLayer.appendText(text, font.loadedName, fontSize);
   2886     },
   2887     nextLineShowText: function CanvasGraphics_nextLineShowText(text) {
   2888       this.nextLine();
   2889       this.showText(text);
   2890     },
   2891     nextLineSetSpacingShowText:
   2892       function CanvasGraphics_nextLineSetSpacingShowText(wordSpacing,
   2893                                                          charSpacing,
   2894                                                          text) {
   2895       this.setWordSpacing(wordSpacing);
   2896       this.setCharSpacing(charSpacing);
   2897       this.nextLineShowText(text);
   2898     },
   2899 
   2900     // Type3 fonts
   2901     setCharWidth: function CanvasGraphics_setCharWidth(xWidth, yWidth) {
   2902       // We can safely ignore this since the width should be the same
   2903       // as the width in the Widths array.
   2904     },
   2905     setCharWidthAndBounds: function CanvasGraphics_setCharWidthAndBounds(xWidth,
   2906                                                                         yWidth,
   2907                                                                         llx,
   2908                                                                         lly,
   2909                                                                         urx,
   2910                                                                         ury) {
   2911       // TODO According to the spec we're also suppose to ignore any operators
   2912       // that set color or include images while processing this type3 font.
   2913       this.rectangle(llx, lly, urx - llx, ury - lly);
   2914       this.clip();
   2915       this.endPath();
   2916     },
   2917 
   2918     // Color
   2919     setStrokeColorSpace: function CanvasGraphics_setStrokeColorSpace(raw) {
   2920       this.current.strokeColorSpace = ColorSpace.fromIR(raw);
   2921     },
   2922     setFillColorSpace: function CanvasGraphics_setFillColorSpace(raw) {
   2923       this.current.fillColorSpace = ColorSpace.fromIR(raw);
   2924     },
   2925     setStrokeColor: function CanvasGraphics_setStrokeColor(/*...*/) {
   2926       var cs = this.current.strokeColorSpace;
   2927       var rgbColor = cs.getRgb(arguments);
   2928       var color = Util.makeCssRgb(rgbColor[0], rgbColor[1], rgbColor[2]);
   2929       this.ctx.strokeStyle = color;
   2930       this.current.strokeColor = color;
   2931     },
   2932     getColorN_Pattern: function CanvasGraphics_getColorN_Pattern(IR, cs) {
   2933       if (IR[0] == 'TilingPattern') {
   2934         var args = IR[1];
   2935         var base = cs.base;
   2936         var color;
   2937         if (base) {
   2938           var baseComps = base.numComps;
   2939 
   2940           color = [];
   2941           for (var i = 0; i < baseComps; ++i)
   2942             color.push(args[i]);
   2943 
   2944           color = base.getRgb(color);
   2945         }
   2946         var pattern = new TilingPattern(IR, color, this.ctx, this.objs);
   2947       } else if (IR[0] == 'RadialAxial' || IR[0] == 'Dummy') {
   2948         var pattern = Pattern.shadingFromIR(IR);
   2949       } else {
   2950         error('Unkown IR type ' + IR[0]);
   2951       }
   2952       return pattern;
   2953     },
   2954     setStrokeColorN: function CanvasGraphics_setStrokeColorN(/*...*/) {
   2955       var cs = this.current.strokeColorSpace;
   2956 
   2957       if (cs.name == 'Pattern') {
   2958         this.current.strokeColor = this.getColorN_Pattern(arguments, cs);
   2959       } else {
   2960         this.setStrokeColor.apply(this, arguments);
   2961       }
   2962     },
   2963     setFillColor: function CanvasGraphics_setFillColor(/*...*/) {
   2964       var cs = this.current.fillColorSpace;
   2965       var rgbColor = cs.getRgb(arguments);
   2966       var color = Util.makeCssRgb(rgbColor[0], rgbColor[1], rgbColor[2]);
   2967       this.ctx.fillStyle = color;
   2968       this.current.fillColor = color;
   2969     },
   2970     setFillColorN: function CanvasGraphics_setFillColorN(/*...*/) {
   2971       var cs = this.current.fillColorSpace;
   2972 
   2973       if (cs.name == 'Pattern') {
   2974         this.current.fillColor = this.getColorN_Pattern(arguments, cs);
   2975       } else {
   2976         this.setFillColor.apply(this, arguments);
   2977       }
   2978     },
   2979     setStrokeGray: function CanvasGraphics_setStrokeGray(gray) {
   2980       if (!(this.current.strokeColorSpace instanceof DeviceGrayCS))
   2981         this.current.strokeColorSpace = new DeviceGrayCS();
   2982 
   2983       var color = Util.makeCssRgb(gray, gray, gray);
   2984       this.ctx.strokeStyle = color;
   2985       this.current.strokeColor = color;
   2986     },
   2987     setFillGray: function CanvasGraphics_setFillGray(gray) {
   2988       if (!(this.current.fillColorSpace instanceof DeviceGrayCS))
   2989         this.current.fillColorSpace = new DeviceGrayCS();
   2990 
   2991       var color = Util.makeCssRgb(gray, gray, gray);
   2992       this.ctx.fillStyle = color;
   2993       this.current.fillColor = color;
   2994     },
   2995     setStrokeRGBColor: function CanvasGraphics_setStrokeRGBColor(r, g, b) {
   2996       if (!(this.current.strokeColorSpace instanceof DeviceRgbCS))
   2997         this.current.strokeColorSpace = new DeviceRgbCS();
   2998 
   2999       var color = Util.makeCssRgb(r, g, b);
   3000       this.ctx.strokeStyle = color;
   3001       this.current.strokeColor = color;
   3002     },
   3003     setFillRGBColor: function CanvasGraphics_setFillRGBColor(r, g, b) {
   3004       if (!(this.current.fillColorSpace instanceof DeviceRgbCS))
   3005         this.current.fillColorSpace = new DeviceRgbCS();
   3006 
   3007       var color = Util.makeCssRgb(r, g, b);
   3008       this.ctx.fillStyle = color;
   3009       this.current.fillColor = color;
   3010     },
   3011     setStrokeCMYKColor: function CanvasGraphics_setStrokeCMYKColor(c, m, y, k) {
   3012       if (!(this.current.strokeColorSpace instanceof DeviceCmykCS))
   3013         this.current.strokeColorSpace = new DeviceCmykCS();
   3014 
   3015       var color = Util.makeCssCmyk(c, m, y, k);
   3016       this.ctx.strokeStyle = color;
   3017       this.current.strokeColor = color;
   3018     },
   3019     setFillCMYKColor: function CanvasGraphics_setFillCMYKColor(c, m, y, k) {
   3020       if (!(this.current.fillColorSpace instanceof DeviceCmykCS))
   3021         this.current.fillColorSpace = new DeviceCmykCS();
   3022 
   3023       var color = Util.makeCssCmyk(c, m, y, k);
   3024       this.ctx.fillStyle = color;
   3025       this.current.fillColor = color;
   3026     },
   3027 
   3028     shadingFill: function CanvasGraphics_shadingFill(patternIR) {
   3029       var ctx = this.ctx;
   3030 
   3031       this.save();
   3032       var pattern = Pattern.shadingFromIR(patternIR);
   3033       ctx.fillStyle = pattern.getPattern(ctx);
   3034 
   3035       var inv = ctx.mozCurrentTransformInverse;
   3036       if (inv) {
   3037         var canvas = ctx.canvas;
   3038         var width = canvas.width;
   3039         var height = canvas.height;
   3040 
   3041         var bl = Util.applyTransform([0, 0], inv);
   3042         var br = Util.applyTransform([0, height], inv);
   3043         var ul = Util.applyTransform([width, 0], inv);
   3044         var ur = Util.applyTransform([width, height], inv);
   3045 
   3046         var x0 = Math.min(bl[0], br[0], ul[0], ur[0]);
   3047         var y0 = Math.min(bl[1], br[1], ul[1], ur[1]);
   3048         var x1 = Math.max(bl[0], br[0], ul[0], ur[0]);
   3049         var y1 = Math.max(bl[1], br[1], ul[1], ur[1]);
   3050 
   3051         this.ctx.fillRect(x0, y0, x1 - x0, y1 - y0);
   3052       } else {
   3053         // HACK to draw the gradient onto an infinite rectangle.
   3054         // PDF gradients are drawn across the entire image while
   3055         // Canvas only allows gradients to be drawn in a rectangle
   3056         // The following bug should allow us to remove this.
   3057         // https://bugzilla.mozilla.org/show_bug.cgi?id=664884
   3058 
   3059         this.ctx.fillRect(-1e10, -1e10, 2e10, 2e10);
   3060       }
   3061 
   3062       this.restore();
   3063     },
   3064 
   3065     // Images
   3066     beginInlineImage: function CanvasGraphics_beginInlineImage() {
   3067       error('Should not call beginInlineImage');
   3068     },
   3069     beginImageData: function CanvasGraphics_beginImageData() {
   3070       error('Should not call beginImageData');
   3071     },
   3072 
   3073     paintFormXObjectBegin: function CanvasGraphics_paintFormXObjectBegin(matrix,
   3074                                                                         bbox) {
   3075       this.save();
   3076 
   3077       if (matrix && isArray(matrix) && 6 == matrix.length)
   3078         this.transform.apply(this, matrix);
   3079 
   3080       if (bbox && isArray(bbox) && 4 == bbox.length) {
   3081         var width = bbox[2] - bbox[0];
   3082         var height = bbox[3] - bbox[1];
   3083         this.rectangle(bbox[0], bbox[1], width, height);
   3084         this.clip();
   3085         this.endPath();
   3086       }
   3087     },
   3088 
   3089     paintFormXObjectEnd: function CanvasGraphics_paintFormXObjectEnd() {
   3090       this.restore();
   3091     },
   3092 
   3093     paintJpegXObject: function CanvasGraphics_paintJpegXObject(objId, w, h) {
   3094       var domImage = this.objs.get(objId);
   3095       if (!domImage) {
   3096         error('Dependent image isn\'t ready yet');
   3097       }
   3098 
   3099       this.save();
   3100 
   3101       var ctx = this.ctx;
   3102       // scale the image to the unit square
   3103       ctx.scale(1 / w, -1 / h);
   3104 
   3105       ctx.drawImage(domImage, 0, 0, domImage.width, domImage.height,
   3106                     0, -h, w, h);
   3107 
   3108       this.restore();
   3109     },
   3110 
   3111     paintImageMaskXObject: function CanvasGraphics_paintImageMaskXObject(
   3112                              imgArray, inverseDecode, width, height) {
   3113       function applyStencilMask(buffer, inverseDecode) {
   3114         var imgArrayPos = 0;
   3115         var i, j, mask, buf;
   3116         // removing making non-masked pixels transparent
   3117         var bufferPos = 3; // alpha component offset
   3118         for (i = 0; i < height; i++) {
   3119           mask = 0;
   3120           for (j = 0; j < width; j++) {
   3121             if (!mask) {
   3122               buf = imgArray[imgArrayPos++];
   3123               mask = 128;
   3124             }
   3125             if (!(buf & mask) == inverseDecode) {
   3126               buffer[bufferPos] = 0;
   3127             }
   3128             bufferPos += 4;
   3129             mask >>= 1;
   3130           }
   3131         }
   3132       }
   3133 
   3134       this.save();
   3135 
   3136       var ctx = this.ctx;
   3137       var w = width, h = height;
   3138       // scale the image to the unit square
   3139       ctx.scale(1 / w, -1 / h);
   3140 
   3141       var tmpCanvas = createScratchCanvas(w, h);
   3142       var tmpCtx = tmpCanvas.getContext('2d');
   3143 
   3144       var fillColor = this.current.fillColor;
   3145       tmpCtx.fillStyle = (fillColor && fillColor.hasOwnProperty('type') &&
   3146                           fillColor.type === 'Pattern') ?
   3147                           fillColor.getPattern(tmpCtx) : fillColor;
   3148       tmpCtx.fillRect(0, 0, w, h);
   3149 
   3150       var imgData = tmpCtx.getImageData(0, 0, w, h);
   3151       var pixels = imgData.data;
   3152 
   3153       applyStencilMask(pixels, inverseDecode);
   3154 
   3155       tmpCtx.putImageData(imgData, 0, 0);
   3156       ctx.drawImage(tmpCanvas, 0, -h);
   3157       this.restore();
   3158     },
   3159 
   3160     paintImageXObject: function CanvasGraphics_paintImageXObject(objId) {
   3161       var imgData = this.objs.get(objId);
   3162       if (!imgData)
   3163         error('Dependent image isn\'t ready yet');
   3164 
   3165       this.save();
   3166       var ctx = this.ctx;
   3167       var w = imgData.width;
   3168       var h = imgData.height;
   3169       // scale the image to the unit square
   3170       ctx.scale(1 / w, -1 / h);
   3171 
   3172       var tmpCanvas = createScratchCanvas(w, h);
   3173       var tmpCtx = tmpCanvas.getContext('2d');
   3174       this.putBinaryImageData(tmpCtx, imgData, w, h);
   3175 
   3176       ctx.drawImage(tmpCanvas, 0, -h);
   3177       this.restore();
   3178     },
   3179 
   3180     putBinaryImageData: function CanvasGraphics_putBinaryImageData() {
   3181       //
   3182     },
   3183 
   3184     // Marked content
   3185 
   3186     markPoint: function CanvasGraphics_markPoint(tag) {
   3187       TODO('Marked content');
   3188     },
   3189     markPointProps: function CanvasGraphics_markPointProps(tag, properties) {
   3190       TODO('Marked content');
   3191     },
   3192     beginMarkedContent: function CanvasGraphics_beginMarkedContent(tag) {
   3193       TODO('Marked content');
   3194     },
   3195     beginMarkedContentProps: function CanvasGraphics_beginMarkedContentProps(
   3196                                         tag, properties) {
   3197       TODO('Marked content');
   3198     },
   3199     endMarkedContent: function CanvasGraphics_endMarkedContent() {
   3200       TODO('Marked content');
   3201     },
   3202 
   3203     // Compatibility
   3204 
   3205     beginCompat: function CanvasGraphics_beginCompat() {
   3206       TODO('ignore undefined operators (should we do that anyway?)');
   3207     },
   3208     endCompat: function CanvasGraphics_endCompat() {
   3209       TODO('stop ignoring undefined operators');
   3210     },
   3211 
   3212     // Helper functions
   3213 
   3214     consumePath: function CanvasGraphics_consumePath() {
   3215       if (this.pendingClip) {
   3216         var savedFillRule = null;
   3217         if (this.pendingClip == EO_CLIP)
   3218           savedFillRule = this.setEOFillRule();
   3219 
   3220         this.ctx.clip();
   3221 
   3222         this.pendingClip = null;
   3223         if (savedFillRule !== null)
   3224           this.restoreFillRule(savedFillRule);
   3225       }
   3226       this.ctx.beginPath();
   3227     },
   3228     // We generally keep the canvas context set for
   3229     // nonzero-winding, and just set evenodd for the operations
   3230     // that need them.
   3231     setEOFillRule: function CanvasGraphics_setEOFillRule() {
   3232       var savedFillRule = this.ctx.mozFillRule;
   3233       this.ctx.mozFillRule = 'evenodd';
   3234       return savedFillRule;
   3235     },
   3236     restoreFillRule: function CanvasGraphics_restoreFillRule(rule) {
   3237       this.ctx.mozFillRule = rule;
   3238     },
   3239     getSinglePixelWidth: function CanvasGraphics_getSinglePixelWidth(scale) {
   3240       var inverse = this.ctx.mozCurrentTransformInverse;
   3241       return Math.abs(inverse[0] + inverse[2]);
   3242     }
   3243   };
   3244 
   3245   return CanvasGraphics;
   3246 })();
   3247 
   3248 if (!isWorker) {
   3249   // Feature detection if the browser can use an Uint8Array directly as imgData.
   3250   var canvas = PdfJS_window.document.createElement('canvas');
   3251   canvas.width = 1;
   3252   canvas.height = 1;
   3253   var ctx = canvas.getContext('2d');
   3254 
   3255   try {
   3256     ctx.putImageData({
   3257       width: 1,
   3258       height: 1,
   3259       data: new Uint8Array(4)
   3260     }, 0, 0);
   3261 
   3262     CanvasGraphics.prototype.putBinaryImageData =
   3263       function CanvasGraphicsPutBinaryImageDataNative(ctx, imgData) {
   3264         ctx.putImageData(imgData, 0, 0);
   3265       };
   3266   } catch (e) {
   3267     CanvasGraphics.prototype.putBinaryImageData =
   3268       function CanvasGraphicsPutBinaryImageDataShim(ctx, imgData, w, h) {
   3269         var tmpImgData = ctx.getImageData(0, 0, w, h);
   3270 
   3271         // Copy over the imageData pixel by pixel.
   3272         var tmpImgDataPixels = tmpImgData.data;
   3273         var len = tmpImgDataPixels.length;
   3274 
   3275         while (len--) {
   3276           tmpImgDataPixels[len] = imgData.data[len];
   3277         }
   3278 
   3279         ctx.putImageData(tmpImgData, 0, 0);
   3280       };
   3281   }
   3282 }
   3283 
   3284 /* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
   3285 /* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */
   3286 
   3287 'use strict';
   3288 
   3289 var Name = (function NameClosure() {
   3290   function Name(name) {
   3291     this.name = name;
   3292   }
   3293 
   3294   Name.prototype = {};
   3295 
   3296   return Name;
   3297 })();
   3298 
   3299 var Cmd = (function CmdClosure() {
   3300   function Cmd(cmd) {
   3301     this.cmd = cmd;
   3302   }
   3303 
   3304   Cmd.prototype = {};
   3305 
   3306   var cmdCache = {};
   3307 
   3308   Cmd.get = function Cmd_get(cmd) {
   3309     var cmdValue = cmdCache[cmd];
   3310     if (cmdValue)
   3311       return cmdValue;
   3312 
   3313     return cmdCache[cmd] = new Cmd(cmd);
   3314   };
   3315 
   3316   return Cmd;
   3317 })();
   3318 
   3319 var Dict = (function DictClosure() {
   3320   // xref is optional
   3321   function Dict(xref) {
   3322     // Map should only be used internally, use functions below to access.
   3323     var map = Object.create(null);
   3324 
   3325     this.assignXref = function Dict_assignXref(newXref) {
   3326       xref = newXref;
   3327     };
   3328 
   3329     // automatically dereferences Ref objects
   3330     this.get = function Dict_get(key1, key2, key3) {
   3331       var value;
   3332       if (typeof (value = map[key1]) != 'undefined' || key1 in map ||
   3333           typeof key2 == 'undefined') {
   3334         return xref ? xref.fetchIfRef(value) : value;
   3335       }
   3336       if (typeof (value = map[key2]) != 'undefined' || key2 in map ||
   3337           typeof key3 == 'undefined') {
   3338         return xref ? xref.fetchIfRef(value) : value;
   3339       }
   3340       value = map[key3] || null;
   3341       return xref ? xref.fetchIfRef(value) : value;
   3342     };
   3343 
   3344     // no dereferencing
   3345     this.getRaw = function Dict_getRaw(key) {
   3346       return map[key];
   3347     };
   3348 
   3349     // creates new map and dereferences all Refs
   3350     this.getAll = function Dict_getAll() {
   3351       var all = {};
   3352       for (var key in map) {
   3353         var obj = this.get(key);
   3354         all[key] = obj instanceof Dict ? obj.getAll() : obj;
   3355       }
   3356       return all;
   3357     };
   3358 
   3359     this.set = function Dict_set(key, value) {
   3360       map[key] = value;
   3361     };
   3362 
   3363     this.has = function Dict_has(key) {
   3364       return key in map;
   3365     };
   3366 
   3367     this.forEach = function Dict_forEach(callback) {
   3368       for (var key in map) {
   3369         callback(key, this.get(key));
   3370       }
   3371     };
   3372   };
   3373 
   3374   return Dict;
   3375 })();
   3376 
   3377 var Ref = (function RefClosure() {
   3378   function Ref(num, gen) {
   3379     this.num = num;
   3380     this.gen = gen;
   3381   }
   3382 
   3383   Ref.prototype = {};
   3384 
   3385   return Ref;
   3386 })();
   3387 
   3388 // The reference is identified by number and generation,
   3389 // this structure stores only one instance of the reference.
   3390 var RefSet = (function RefSetClosure() {
   3391   function RefSet() {
   3392     this.dict = {};
   3393   }
   3394 
   3395   RefSet.prototype = {
   3396     has: function RefSet_has(ref) {
   3397       return !!this.dict['R' + ref.num + '.' + ref.gen];
   3398     },
   3399 
   3400     put: function RefSet_put(ref) {
   3401       this.dict['R' + ref.num + '.' + ref.gen] = ref;
   3402     }
   3403   };
   3404 
   3405   return RefSet;
   3406 })();
   3407 
   3408 var Catalog = (function CatalogClosure() {
   3409   function Catalog(xref) {
   3410     this.xref = xref;
   3411     var obj = xref.getCatalogObj();
   3412     assertWellFormed(isDict(obj), 'catalog object is not a dictionary');
   3413     this.catDict = obj;
   3414   }
   3415 
   3416   Catalog.prototype = {
   3417     get metadata() {
   3418       var stream = this.catDict.get('Metadata');
   3419       var metadata;
   3420       if (stream && isDict(stream.dict)) {
   3421         var type = stream.dict.get('Type');
   3422         var subtype = stream.dict.get('Subtype');
   3423 
   3424         if (isName(type) && isName(subtype) &&
   3425             type.name === 'Metadata' && subtype.name === 'XML') {
   3426           metadata = stringToPDFString(bytesToString(stream.getBytes()));
   3427         }
   3428       }
   3429 
   3430       return shadow(this, 'metadata', metadata);
   3431     },
   3432     get toplevelPagesDict() {
   3433       var pagesObj = this.catDict.get('Pages');
   3434       assertWellFormed(isDict(pagesObj), 'invalid top-level pages dictionary');
   3435       // shadow the prototype getter
   3436       return shadow(this, 'toplevelPagesDict', pagesObj);
   3437     },
   3438     get documentOutline() {
   3439       var xref = this.xref;
   3440       var obj = this.catDict.get('Outlines');
   3441       var root = { items: [] };
   3442       if (isDict(obj)) {
   3443         obj = obj.getRaw('First');
   3444         var processed = new RefSet();
   3445         if (isRef(obj)) {
   3446           var queue = [{obj: obj, parent: root}];
   3447           // to avoid recursion keeping track of the items
   3448           // in the processed dictionary
   3449           processed.put(obj);
   3450           while (queue.length > 0) {
   3451             var i = queue.shift();
   3452             var outlineDict = xref.fetchIfRef(i.obj);
   3453             if (outlineDict === null)
   3454               continue;
   3455             if (!outlineDict.has('Title'))
   3456               error('Invalid outline item');
   3457             var dest = outlineDict.get('A');
   3458             if (dest)
   3459               dest = dest.get('D');
   3460             else if (outlineDict.has('Dest')) {
   3461               dest = outlineDict.getRaw('Dest');
   3462               if (isName(dest))
   3463                 dest = dest.name;
   3464             }
   3465             var title = outlineDict.get('Title');
   3466             var outlineItem = {
   3467               dest: dest,
   3468               title: stringToPDFString(title),
   3469               color: outlineDict.get('C') || [0, 0, 0],
   3470               count: outlineDict.get('Count'),
   3471               bold: !!(outlineDict.get('F') & 2),
   3472               italic: !!(outlineDict.get('F') & 1),
   3473               items: []
   3474             };
   3475             i.parent.items.push(outlineItem);
   3476             obj = outlineDict.getRaw('First');
   3477             if (isRef(obj) && !processed.has(obj)) {
   3478               queue.push({obj: obj, parent: outlineItem});
   3479               processed.put(obj);
   3480             }
   3481             obj = outlineDict.getRaw('Next');
   3482             if (isRef(obj) && !processed.has(obj)) {
   3483               queue.push({obj: obj, parent: i.parent});
   3484               processed.put(obj);
   3485             }
   3486           }
   3487         }
   3488       }
   3489       obj = root.items.length > 0 ? root.items : null;
   3490       return shadow(this, 'documentOutline', obj);
   3491     },
   3492     get numPages() {
   3493       var obj = this.toplevelPagesDict.get('Count');
   3494       assertWellFormed(
   3495         isInt(obj),
   3496         'page count in top level pages object is not an integer'
   3497       );
   3498       // shadow the prototype getter
   3499       return shadow(this, 'num', obj);
   3500     },
   3501     traverseKids: function Catalog_traverseKids(pagesDict) {
   3502       var pageCache = this.pageCache;
   3503       var kids = pagesDict.get('Kids');
   3504       assertWellFormed(isArray(kids),
   3505                        'page dictionary kids object is not an array');
   3506       for (var i = 0, ii = kids.length; i < ii; ++i) {
   3507         var kid = kids[i];
   3508         assertWellFormed(isRef(kid),
   3509                         'page dictionary kid is not a reference');
   3510         var obj = this.xref.fetch(kid);
   3511         if (isDict(obj, 'Page') || (isDict(obj) && !obj.has('Kids'))) {
   3512           pageCache.push(new Page(this.xref, pageCache.length, obj, kid));
   3513         } else { // must be a child page dictionary
   3514           assertWellFormed(
   3515             isDict(obj),
   3516             'page dictionary kid reference points to wrong type of object'
   3517           );
   3518           this.traverseKids(obj);
   3519         }
   3520       }
   3521     },
   3522     get destinations() {
   3523       function fetchDestination(dest) {
   3524         return isDict(dest) ? dest.get('D') : dest;
   3525       }
   3526 
   3527       var xref = this.xref;
   3528       var dests = {}, nameTreeRef, nameDictionaryRef;
   3529       var obj = this.catDict.get('Names');
   3530       if (obj)
   3531         nameTreeRef = obj.getRaw('Dests');
   3532       else if (this.catDict.has('Dests'))
   3533         nameDictionaryRef = this.catDict.get('Dests');
   3534 
   3535       if (nameDictionaryRef) {
   3536         // reading simple destination dictionary
   3537         obj = nameDictionaryRef;
   3538         obj.forEach(function catalogForEach(key, value) {
   3539           if (!value) return;
   3540           dests[key] = fetchDestination(value);
   3541         });
   3542       }
   3543       if (nameTreeRef) {
   3544         // reading name tree
   3545         var processed = new RefSet();
   3546         processed.put(nameTreeRef);
   3547         var queue = [nameTreeRef];
   3548         while (queue.length > 0) {
   3549           var i, n;
   3550           obj = xref.fetch(queue.shift());
   3551           if (obj.has('Kids')) {
   3552             var kids = obj.get('Kids');
   3553             for (i = 0, n = kids.length; i < n; i++) {
   3554               var kid = kids[i];
   3555               if (processed.has(kid))
   3556                 error('invalid destinations');
   3557               queue.push(kid);
   3558               processed.put(kid);
   3559             }
   3560             continue;
   3561           }
   3562           var names = obj.get('Names');
   3563           for (i = 0, n = names.length; i < n; i += 2) {
   3564             dests[names[i]] = fetchDestination(xref.fetchIfRef(names[i + 1]));
   3565           }
   3566         }
   3567       }
   3568       return shadow(this, 'destinations', dests);
   3569     },
   3570     getPage: function Catalog_getPage(n) {
   3571       var pageCache = this.pageCache;
   3572       if (!pageCache) {
   3573         pageCache = this.pageCache = [];
   3574         this.traverseKids(this.toplevelPagesDict);
   3575       }
   3576       return this.pageCache[n - 1];
   3577     }
   3578   };
   3579 
   3580   return Catalog;
   3581 })();
   3582 
   3583 var XRef = (function XRefClosure() {
   3584   function XRef(stream, startXRef, mainXRefEntriesOffset) {
   3585     this.stream = stream;
   3586     this.entries = [];
   3587     this.xrefstms = {};
   3588     var trailerDict = this.readXRef(startXRef);
   3589     trailerDict.assignXref(this);
   3590     this.trailer = trailerDict;
   3591     // prepare the XRef cache
   3592     this.cache = [];
   3593 
   3594     var encrypt = trailerDict.get('Encrypt');
   3595     if (encrypt) {
   3596       var fileId = trailerDict.get('ID');
   3597       this.encrypt = new CipherTransformFactory(encrypt,
   3598                                                 fileId[0] /*, password */);
   3599     }
   3600 
   3601     // get the root dictionary (catalog) object
   3602     if (!(this.root = trailerDict.get('Root')))
   3603       error('Invalid root reference');
   3604   }
   3605 
   3606   XRef.prototype = {
   3607     readXRefTable: function XRef_readXRefTable(parser) {
   3608       // Example of cross-reference table:
   3609       // xref
   3610       // 0 1                    <-- subsection header (first obj #, obj count)
   3611       // 0000000000 65535 f     <-- actual object (offset, generation #, f/n)
   3612       // 23 2                   <-- subsection header ... and so on ...
   3613       // 0000025518 00002 n
   3614       // 0000025635 00000 n
   3615       // trailer
   3616       // ...
   3617 
   3618       // Outer loop is over subsection headers
   3619       var obj;
   3620       while (!isCmd(obj = parser.getObj(), 'trailer')) {
   3621         var first = obj,
   3622             count = parser.getObj();
   3623 
   3624         if (!isInt(first) || !isInt(count))
   3625           error('Invalid XRef table: wrong types in subsection header');
   3626 
   3627         // Inner loop is over objects themselves
   3628         for (var i = 0; i < count; i++) {
   3629           var entry = {};
   3630           entry.offset = parser.getObj();
   3631           entry.gen = parser.getObj();
   3632           var type = parser.getObj();
   3633 
   3634           if (isCmd(type, 'f'))
   3635             entry.free = true;
   3636           else if (isCmd(type, 'n'))
   3637             entry.uncompressed = true;
   3638 
   3639           // Validate entry obj
   3640           if (!isInt(entry.offset) || !isInt(entry.gen) ||
   3641               !(entry.free || entry.uncompressed)) {
   3642             error('Invalid entry in XRef subsection: ' + first + ', ' + count);
   3643           }
   3644 
   3645           if (!this.entries[i + first])
   3646             this.entries[i + first] = entry;
   3647         }
   3648       }
   3649 
   3650       // Sanity check: as per spec, first object must be free
   3651       if (this.entries[0] && !this.entries[0].free)
   3652         error('Invalid XRef table: unexpected first object');
   3653 
   3654       // Sanity check
   3655       if (!isCmd(obj, 'trailer'))
   3656         error('Invalid XRef table: could not find trailer dictionary');
   3657 
   3658       // Read trailer dictionary, e.g.
   3659       // trailer
   3660       //    << /Size 22
   3661       //      /Root 20R
   3662       //      /Info 10R
   3663       //      /ID [ <81b14aafa313db63dbd6f981e49f94f4> ]
   3664       //    >>
   3665       // The parser goes through the entire stream << ... >> and provides
   3666       // a getter interface for the key-value table
   3667       var dict = parser.getObj();
   3668       if (!isDict(dict))
   3669         error('Invalid XRef table: could not parse trailer dictionary');
   3670 
   3671       return dict;
   3672     },
   3673     readXRefStream: function XRef_readXRefStream(stream) {
   3674       var streamParameters = stream.parameters;
   3675       var byteWidths = streamParameters.get('W');
   3676       var range = streamParameters.get('Index');
   3677       if (!range)
   3678         range = [0, streamParameters.get('Size')];
   3679       var i, j;
   3680       while (range.length > 0) {
   3681         var first = range[0], n = range[1];
   3682         if (!isInt(first) || !isInt(n))
   3683           error('Invalid XRef range fields: ' + first + ', ' + n);
   3684         var typeFieldWidth = byteWidths[0];
   3685         var offsetFieldWidth = byteWidths[1];
   3686         var generationFieldWidth = byteWidths[2];
   3687         if (!isInt(typeFieldWidth) || !isInt(offsetFieldWidth) ||
   3688             !isInt(generationFieldWidth)) {
   3689           error('Invalid XRef entry fields length: ' + first + ', ' + n);
   3690         }
   3691         for (i = 0; i < n; ++i) {
   3692           var type = 0, offset = 0, generation = 0;
   3693           for (j = 0; j < typeFieldWidth; ++j)
   3694             type = (type << 8) | stream.getByte();
   3695           // if type field is absent, its default value = 1
   3696           if (typeFieldWidth == 0)
   3697             type = 1;
   3698           for (j = 0; j < offsetFieldWidth; ++j)
   3699             offset = (offset << 8) | stream.getByte();
   3700           for (j = 0; j < generationFieldWidth; ++j)
   3701             generation = (generation << 8) | stream.getByte();
   3702           var entry = {};
   3703           entry.offset = offset;
   3704           entry.gen = generation;
   3705           switch (type) {
   3706             case 0:
   3707               entry.free = true;
   3708               break;
   3709             case 1:
   3710               entry.uncompressed = true;
   3711               break;
   3712             case 2:
   3713               break;
   3714             default:
   3715               error('Invalid XRef entry type: ' + type);
   3716           }
   3717           if (!this.entries[first + i])
   3718             this.entries[first + i] = entry;
   3719         }
   3720         range.splice(0, 2);
   3721       }
   3722       return streamParameters;
   3723     },
   3724     indexObjects: function XRef_indexObjects() {
   3725       // Simple scan through the PDF content to find objects,
   3726       // trailers and XRef streams.
   3727       function readToken(data, offset) {
   3728         var token = '', ch = data[offset];
   3729         while (ch !== 13 && ch !== 10) {
   3730           if (++offset >= data.length)
   3731             break;
   3732           token += String.fromCharCode(ch);
   3733           ch = data[offset];
   3734         }
   3735         return token;
   3736       }
   3737       function skipUntil(data, offset, what) {
   3738         var length = what.length, dataLength = data.length;
   3739         var skipped = 0;
   3740         // finding byte sequence
   3741         while (offset < dataLength) {
   3742           var i = 0;
   3743           while (i < length && data[offset + i] == what[i])
   3744             ++i;
   3745           if (i >= length)
   3746             break; // sequence found
   3747 
   3748           offset++;
   3749           skipped++;
   3750         }
   3751         return skipped;
   3752       }
   3753       var trailerBytes = new Uint8Array([116, 114, 97, 105, 108, 101, 114]);
   3754       var startxrefBytes = new Uint8Array([115, 116, 97, 114, 116, 120, 114,
   3755                                           101, 102]);
   3756       var endobjBytes = new Uint8Array([101, 110, 100, 111, 98, 106]);
   3757       var xrefBytes = new Uint8Array([47, 88, 82, 101, 102]);
   3758 
   3759       var stream = this.stream;
   3760       stream.pos = 0;
   3761       var buffer = stream.getBytes();
   3762       var position = stream.start, length = buffer.length;
   3763       var trailers = [], xrefStms = [];
   3764       var state = 0;
   3765       var currentToken;
   3766       while (position < length) {
   3767         var ch = buffer[position];
   3768         if (ch === 32 || ch === 9 || ch === 13 || ch === 10) {
   3769           ++position;
   3770           continue;
   3771         }
   3772         if (ch === 37) { // %-comment
   3773           do {
   3774             ++position;
   3775             ch = buffer[position];
   3776           } while (ch !== 13 && ch !== 10);
   3777           continue;
   3778         }
   3779         var token = readToken(buffer, position);
   3780         var m;
   3781         if (token === 'xref') {
   3782           position += skipUntil(buffer, position, trailerBytes);
   3783           trailers.push(position);
   3784           position += skipUntil(buffer, position, startxrefBytes);
   3785         } else if ((m = /^(\d+)\s+(\d+)\s+obj\b/.exec(token))) {
   3786           this.entries[m[1]] = {
   3787             offset: position,
   3788             gen: m[2] | 0,
   3789             uncompressed: true
   3790           };
   3791 
   3792           var contentLength = skipUntil(buffer, position, endobjBytes) + 7;
   3793           var content = buffer.subarray(position, position + contentLength);
   3794 
   3795           // checking XRef stream suspect
   3796           // (it shall have '/XRef' and next char is not a letter)
   3797           var xrefTagOffset = skipUntil(content, 0, xrefBytes);
   3798           if (xrefTagOffset < contentLength &&
   3799               content[xrefTagOffset + 5] < 64) {
   3800             xrefStms.push(position);
   3801             this.xrefstms[position] = 1; // don't read it recursively
   3802           }
   3803 
   3804           position += contentLength;
   3805         } else
   3806           position += token.length + 1;
   3807       }
   3808       // reading XRef streams
   3809       for (var i = 0, ii = xrefStms.length; i < ii; ++i) {
   3810           this.readXRef(xrefStms[i], true);
   3811       }
   3812       // finding main trailer
   3813       var dict;
   3814       for (var i = 0, ii = trailers.length; i < ii; ++i) {
   3815         stream.pos = trailers[i];
   3816         var parser = new Parser(new Lexer(stream), true, null);
   3817         var obj = parser.getObj();
   3818         if (!isCmd(obj, 'trailer'))
   3819           continue;
   3820         // read the trailer dictionary
   3821         if (!isDict(dict = parser.getObj()))
   3822           continue;
   3823         // taking the first one with 'ID'
   3824         if (dict.has('ID'))
   3825           return dict;
   3826       }
   3827       // no tailer with 'ID', taking last one (if exists)
   3828       if (dict)
   3829         return dict;
   3830       // nothing helps
   3831       error('Invalid PDF structure');
   3832     },
   3833     readXRef: function XRef_readXRef(startXRef, recoveryMode) {
   3834       var stream = this.stream;
   3835       stream.pos = startXRef;
   3836 
   3837       try {
   3838         var parser = new Parser(new Lexer(stream), true, null);
   3839         var obj = parser.getObj();
   3840         var dict;
   3841 
   3842         // Get dictionary
   3843         if (isCmd(obj, 'xref')) {
   3844           // Parse end-of-file XRef
   3845           dict = this.readXRefTable(parser);
   3846 
   3847           // Recursively get other XRefs 'XRefStm', if any
   3848           obj = dict.get('XRefStm');
   3849           if (isInt(obj)) {
   3850             var pos = obj;
   3851             // ignore previously loaded xref streams
   3852             // (possible infinite recursion)
   3853             if (!(pos in this.xrefstms)) {
   3854               this.xrefstms[pos] = 1;
   3855               this.readXRef(pos);
   3856             }
   3857           }
   3858         } else if (isInt(obj)) {
   3859           // Parse in-stream XRef
   3860           if (!isInt(parser.getObj()) ||
   3861               !isCmd(parser.getObj(), 'obj') ||
   3862               !isStream(obj = parser.getObj())) {
   3863             error('Invalid XRef stream');
   3864           }
   3865           dict = this.readXRefStream(obj);
   3866           if (!dict)
   3867             error('Failed to read XRef stream');
   3868         }
   3869 
   3870         // Recursively get previous dictionary, if any
   3871         obj = dict.get('Prev');
   3872         if (isInt(obj))
   3873           this.readXRef(obj, recoveryMode);
   3874         else if (isRef(obj)) {
   3875           // The spec says Prev must not be a reference, i.e. "/Prev NNN"
   3876           // This is a fallback for non-compliant PDFs, i.e. "/Prev NNN 0 R"
   3877           this.readXRef(obj.num, recoveryMode);
   3878         }
   3879 
   3880         return dict;
   3881       } catch (e) {
   3882         log('(while reading XRef): ' + e);
   3883       }
   3884 
   3885       if (recoveryMode)
   3886         return;
   3887 
   3888       warn('Indexing all PDF objects');
   3889       return this.indexObjects();
   3890     },
   3891     getEntry: function XRef_getEntry(i) {
   3892       var e = this.entries[i];
   3893       if (e === null)
   3894         return null;
   3895       return e.free ? null : e; // returns null is the entry is free
   3896     },
   3897     fetchIfRef: function XRef_fetchIfRef(obj) {
   3898       if (!isRef(obj))
   3899         return obj;
   3900       return this.fetch(obj);
   3901     },
   3902     fetch: function XRef_fetch(ref, suppressEncryption) {
   3903       assertWellFormed(isRef(ref), 'ref object is not a reference');
   3904       var num = ref.num;
   3905       if (num in this.cache)
   3906         return this.cache[num];
   3907 
   3908       var e = this.getEntry(num);
   3909 
   3910       // the referenced entry can be free
   3911       if (e === null)
   3912         return (this.cache[num] = e);
   3913 
   3914       var gen = ref.gen;
   3915       var stream, parser;
   3916       if (e.uncompressed) {
   3917         if (e.gen != gen)
   3918           error('inconsistent generation in XRef');
   3919         stream = this.stream.makeSubStream(e.offset);
   3920         parser = new Parser(new Lexer(stream), true, this);
   3921         var obj1 = parser.getObj();
   3922         var obj2 = parser.getObj();
   3923         var obj3 = parser.getObj();
   3924         if (!isInt(obj1) || obj1 != num ||
   3925             !isInt(obj2) || obj2 != gen ||
   3926             !isCmd(obj3)) {
   3927           error('bad XRef entry');
   3928         }
   3929         if (!isCmd(obj3, 'obj')) {
   3930           // some bad pdfs use "obj1234" and really mean 1234
   3931           if (obj3.cmd.indexOf('obj') == 0) {
   3932             num = parseInt(obj3.cmd.substring(3), 10);
   3933             if (!isNaN(num))
   3934               return num;
   3935           }
   3936           error('bad XRef entry');
   3937         }
   3938         if (this.encrypt && !suppressEncryption) {
   3939           try {
   3940             e = parser.getObj(this.encrypt.createCipherTransform(num, gen));
   3941           } catch (ex) {
   3942             // almost all streams must be encrypted, but sometimes
   3943             // they are not probably due to some broken generators
   3944             // re-trying without encryption
   3945             return this.fetch(ref, true);
   3946           }
   3947         } else {
   3948           e = parser.getObj();
   3949         }
   3950         // Don't cache streams since they are mutable (except images).
   3951         if (!isStream(e) || e instanceof JpegStream)
   3952           this.cache[num] = e;
   3953         return e;
   3954       }
   3955 
   3956       // compressed entry
   3957       stream = this.fetch(new Ref(e.offset, 0));
   3958       if (!isStream(stream))
   3959         error('bad ObjStm stream');
   3960       var first = stream.parameters.get('First');
   3961       var n = stream.parameters.get('N');
   3962       if (!isInt(first) || !isInt(n)) {
   3963         error('invalid first and n parameters for ObjStm stream');
   3964       }
   3965       parser = new Parser(new Lexer(stream), false, this);
   3966       var i, entries = [], nums = [];
   3967       // read the object numbers to populate cache
   3968       for (i = 0; i < n; ++i) {
   3969         num = parser.getObj();
   3970         if (!isInt(num)) {
   3971           error('invalid object number in the ObjStm stream: ' + num);
   3972         }
   3973         nums.push(num);
   3974         var offset = parser.getObj();
   3975         if (!isInt(offset)) {
   3976           error('invalid object offset in the ObjStm stream: ' + offset);
   3977         }
   3978       }
   3979       // read stream objects for cache
   3980       for (i = 0; i < n; ++i) {
   3981         entries.push(parser.getObj());
   3982         this.cache[nums[i]] = entries[i];
   3983       }
   3984       e = entries[e.gen];
   3985       if (!e) {
   3986         error('bad XRef entry for compressed object');
   3987       }
   3988       return e;
   3989     },
   3990     getCatalogObj: function XRef_getCatalogObj() {
   3991       return this.root;
   3992     }
   3993   };
   3994 
   3995   return XRef;
   3996 })();
   3997 
   3998 /**
   3999  * A PDF document and page is built of many objects. E.g. there are objects
   4000  * for fonts, images, rendering code and such. These objects might get processed
   4001  * inside of a worker. The `PDFObjects` implements some basic functions to
   4002  * manage these objects.
   4003  */
   4004 var PDFObjects = (function PDFObjectsClosure() {
   4005   function PDFObjects() {
   4006     this.objs = {};
   4007   }
   4008 
   4009   PDFObjects.prototype = {
   4010     objs: null,
   4011 
   4012     /**
   4013      * Internal function.
   4014      * Ensures there is an object defined for `objId`. Stores `data` on the
   4015      * object *if* it is created.
   4016      */
   4017     ensureObj: function PDFObjects_ensureObj(objId, data) {
   4018       if (this.objs[objId])
   4019         return this.objs[objId];
   4020       return this.objs[objId] = new Promise(objId, data);
   4021     },
   4022 
   4023     /**
   4024      * If called *without* callback, this returns the data of `objId` but the
   4025      * object needs to be resolved. If it isn't, this function throws.
   4026      *
   4027      * If called *with* a callback, the callback is called with the data of the
   4028      * object once the object is resolved. That means, if you call this
   4029      * function and the object is already resolved, the callback gets called
   4030      * right away.
   4031      */
   4032     get: function PDFObjects_get(objId, callback) {
   4033       // If there is a callback, then the get can be async and the object is
   4034       // not required to be resolved right now
   4035       if (callback) {
   4036         this.ensureObj(objId).then(callback);
   4037         return null;
   4038       }
   4039 
   4040       // If there isn't a callback, the user expects to get the resolved data
   4041       // directly.
   4042       var obj = this.objs[objId];
   4043 
   4044       // If there isn't an object yet or the object isn't resolved, then the
   4045       // data isn't ready yet!
   4046       if (!obj || !obj.isResolved)
   4047         error('Requesting object that isn\'t resolved yet ' + objId);
   4048 
   4049       return obj.data;
   4050     },
   4051 
   4052     /**
   4053      * Resolves the object `objId` with optional `data`.
   4054      */
   4055     resolve: function PDFObjects_resolve(objId, data) {
   4056       var objs = this.objs;
   4057 
   4058       // In case there is a promise already on this object, just resolve it.
   4059       if (objs[objId]) {
   4060         objs[objId].resolve(data);
   4061       } else {
   4062         this.ensureObj(objId, data);
   4063       }
   4064     },
   4065 
   4066     onData: function PDFObjects_onData(objId, callback) {
   4067       this.ensureObj(objId).onData(callback);
   4068     },
   4069 
   4070     isResolved: function PDFObjects_isResolved(objId) {
   4071       var objs = this.objs;
   4072       if (!objs[objId]) {
   4073         return false;
   4074       } else {
   4075         return objs[objId].isResolved;
   4076       }
   4077     },
   4078 
   4079     hasData: function PDFObjects_hasData(objId) {
   4080       var objs = this.objs;
   4081       if (!objs[objId]) {
   4082         return false;
   4083       } else {
   4084         return objs[objId].hasData;
   4085       }
   4086     },
   4087 
   4088     /**
   4089      * Sets the data of an object but *doesn't* resolve it.
   4090      */
   4091     setData: function PDFObjects_setData(objId, data) {
   4092       // Watchout! If you call `this.ensureObj(objId, data)` you're going to
   4093       // create a *resolved* promise which shouldn't be the case!
   4094       this.ensureObj(objId).data = data;
   4095     }
   4096   };
   4097   return PDFObjects;
   4098 })();
   4099 
   4100 
   4101 /* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
   4102 /* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */
   4103 
   4104 'use strict';
   4105 
   4106 var PDFFunction = (function PDFFunctionClosure() {
   4107   var CONSTRUCT_SAMPLED = 0;
   4108   var CONSTRUCT_INTERPOLATED = 2;
   4109   var CONSTRUCT_STICHED = 3;
   4110   var CONSTRUCT_POSTSCRIPT = 4;
   4111 
   4112   return {
   4113     getSampleArray: function PDFFunction_getSampleArray(size, outputSize, bps,
   4114                                                        str) {
   4115       var length = 1;
   4116       for (var i = 0, ii = size.length; i < ii; i++)
   4117         length *= size[i];
   4118       length *= outputSize;
   4119 
   4120       var array = [];
   4121       var codeSize = 0;
   4122       var codeBuf = 0;
   4123       // 32 is a valid bps so shifting won't work
   4124       var sampleMul = 1.0 / (Math.pow(2.0, bps) - 1);
   4125 
   4126       var strBytes = str.getBytes((length * bps + 7) / 8);
   4127       var strIdx = 0;
   4128       for (var i = 0; i < length; i++) {
   4129         while (codeSize < bps) {
   4130           codeBuf <<= 8;
   4131           codeBuf |= strBytes[strIdx++];
   4132           codeSize += 8;
   4133         }
   4134         codeSize -= bps;
   4135         array.push((codeBuf >> codeSize) * sampleMul);
   4136         codeBuf &= (1 << codeSize) - 1;
   4137       }
   4138       return array;
   4139     },
   4140 
   4141     getIR: function PDFFunction_getIR(xref, fn) {
   4142       var dict = fn.dict;
   4143       if (!dict)
   4144         dict = fn;
   4145 
   4146       var types = [this.constructSampled,
   4147                    null,
   4148                    this.constructInterpolated,
   4149                    this.constructStiched,
   4150                    this.constructPostScript];
   4151 
   4152       var typeNum = dict.get('FunctionType');
   4153       var typeFn = types[typeNum];
   4154       if (!typeFn)
   4155         error('Unknown type of function');
   4156 
   4157       return typeFn.call(this, fn, dict, xref);
   4158     },
   4159 
   4160     fromIR: function PDFFunction_fromIR(IR) {
   4161       var type = IR[0];
   4162       switch (type) {
   4163         case CONSTRUCT_SAMPLED:
   4164           return this.constructSampledFromIR(IR);
   4165         case CONSTRUCT_INTERPOLATED:
   4166           return this.constructInterpolatedFromIR(IR);
   4167         case CONSTRUCT_STICHED:
   4168           return this.constructStichedFromIR(IR);
   4169         case CONSTRUCT_POSTSCRIPT:
   4170         default:
   4171           return this.constructPostScriptFromIR(IR);
   4172       }
   4173     },
   4174 
   4175     parse: function PDFFunction_parse(xref, fn) {
   4176       var IR = this.getIR(xref, fn);
   4177       return this.fromIR(IR);
   4178     },
   4179 
   4180     constructSampled: function PDFFunction_constructSampled(str, dict) {
   4181       function toMultiArray(arr) {
   4182         var inputLength = arr.length;
   4183         var outputLength = arr.length / 2;
   4184         var out = [];
   4185         var index = 0;
   4186         for (var i = 0; i < inputLength; i += 2) {
   4187           out[index] = [arr[i], arr[i + 1]];
   4188           ++index;
   4189         }
   4190         return out;
   4191       }
   4192       var domain = dict.get('Domain');
   4193       var range = dict.get('Range');
   4194 
   4195       if (!domain || !range)
   4196         error('No domain or range');
   4197 
   4198       var inputSize = domain.length / 2;
   4199       var outputSize = range.length / 2;
   4200 
   4201       domain = toMultiArray(domain);
   4202       range = toMultiArray(range);
   4203 
   4204       var size = dict.get('Size');
   4205       var bps = dict.get('BitsPerSample');
   4206       var order = dict.get('Order');
   4207       if (!order)
   4208         order = 1;
   4209       if (order !== 1)
   4210         error('No support for cubic spline interpolation: ' + order);
   4211 
   4212       var encode = dict.get('Encode');
   4213       if (!encode) {
   4214         encode = [];
   4215         for (var i = 0; i < inputSize; ++i) {
   4216           encode.push(0);
   4217           encode.push(size[i] - 1);
   4218         }
   4219       }
   4220       encode = toMultiArray(encode);
   4221 
   4222       var decode = dict.get('Decode');
   4223       if (!decode)
   4224         decode = range;
   4225       else
   4226         decode = toMultiArray(decode);
   4227 
   4228       var samples = this.getSampleArray(size, outputSize, bps, str);
   4229 
   4230       return [
   4231         CONSTRUCT_SAMPLED, inputSize, domain, encode, decode, samples, size,
   4232         outputSize, Math.pow(2, bps) - 1, range
   4233       ];
   4234     },
   4235 
   4236     constructSampledFromIR: function PDFFunction_constructSampledFromIR(IR) {
   4237       // See chapter 3, page 109 of the PDF reference
   4238       function interpolate(x, xmin, xmax, ymin, ymax) {
   4239         return ymin + ((x - xmin) * ((ymax - ymin) / (xmax - xmin)));
   4240       }
   4241 
   4242       return function constructSampledFromIRResult(args) {
   4243         // See chapter 3, page 110 of the PDF reference.
   4244         var m = IR[1];
   4245         var domain = IR[2];
   4246         var encode = IR[3];
   4247         var decode = IR[4];
   4248         var samples = IR[5];
   4249         var size = IR[6];
   4250         var n = IR[7];
   4251         var mask = IR[8];
   4252         var range = IR[9];
   4253 
   4254         if (m != args.length)
   4255           error('Incorrect number of arguments: ' + inputSize + ' != ' +
   4256                 args.length);
   4257 
   4258         var x = args;
   4259 
   4260         // Building the cube vertices: its part and sample index
   4261         // http://rjwagner49.com/Mathematics/Interpolation.pdf
   4262         var cubeVertices = 1 << m;
   4263         var cubeN = new Float64Array(cubeVertices);
   4264         var cubeVertex = new Uint32Array(cubeVertices);
   4265         for (var j = 0; j < cubeVertices; j++)
   4266           cubeN[j] = 1;
   4267 
   4268         var k = n, pos = 1;
   4269         // Map x_i to y_j for 0 <= i < m using the sampled function.
   4270         for (var i = 0; i < m; ++i) {
   4271           // x_i' = min(max(x_i, Domain_2i), Domain_2i+1)
   4272           var domain_2i = domain[i][0];
   4273           var domain_2i_1 = domain[i][1];
   4274           var xi = Math.min(Math.max(x[i], domain_2i), domain_2i_1);
   4275 
   4276           // e_i = Interpolate(x_i', Domain_2i, Domain_2i+1,
   4277           //                   Encode_2i, Encode_2i+1)
   4278           var e = interpolate(xi, domain_2i, domain_2i_1,
   4279                               encode[i][0], encode[i][1]);
   4280 
   4281           // e_i' = min(max(e_i, 0), Size_i - 1)
   4282           var size_i = size[i];
   4283           e = Math.min(Math.max(e, 0), size_i - 1);
   4284 
   4285           // Adjusting the cube: N and vertex sample index
   4286           var e0 = e < size_i - 1 ? Math.floor(e) : e - 1; // e1 = e0 + 1;
   4287           var n0 = e0 + 1 - e; // (e1 - e) / (e1 - e0);
   4288           var n1 = e - e0; // (e - e0) / (e1 - e0);
   4289           var offset0 = e0 * k;
   4290           var offset1 = offset0 + k; // e1 * k
   4291           for (var j = 0; j < cubeVertices; j++) {
   4292             if (j & pos) {
   4293               cubeN[j] *= n1;
   4294               cubeVertex[j] += offset1;
   4295             } else {
   4296               cubeN[j] *= n0;
   4297               cubeVertex[j] += offset0;
   4298             }
   4299           }
   4300 
   4301           k *= size_i;
   4302           pos <<= 1;
   4303         }
   4304 
   4305         var y = new Float64Array(n);
   4306         for (var j = 0; j < n; ++j) {
   4307           // Sum all cube vertices' samples portions
   4308           var rj = 0;
   4309           for (var i = 0; i < cubeVertices; i++)
   4310             rj += samples[cubeVertex[i] + j] * cubeN[i];
   4311 
   4312           // r_j' = Interpolate(r_j, 0, 2^BitsPerSample - 1,
   4313           //                    Decode_2j, Decode_2j+1)
   4314           rj = interpolate(rj, 0, 1, decode[j][0], decode[j][1]);
   4315 
   4316           // y_j = min(max(r_j, range_2j), range_2j+1)
   4317           y[j] = Math.min(Math.max(rj, range[j][0]), range[j][1]);
   4318         }
   4319 
   4320         return y;
   4321       }
   4322     },
   4323 
   4324     constructInterpolated: function PDFFunction_constructInterpolated(str,
   4325                                                                       dict) {
   4326       var c0 = dict.get('C0') || [0];
   4327       var c1 = dict.get('C1') || [1];
   4328       var n = dict.get('N');
   4329 
   4330       if (!isArray(c0) || !isArray(c1))
   4331         error('Illegal dictionary for interpolated function');
   4332 
   4333       var length = c0.length;
   4334       var diff = [];
   4335       for (var i = 0; i < length; ++i)
   4336         diff.push(c1[i] - c0[i]);
   4337 
   4338       return [CONSTRUCT_INTERPOLATED, c0, diff, n];
   4339     },
   4340 
   4341     constructInterpolatedFromIR:
   4342       function PDFFunction_constructInterpolatedFromIR(IR) {
   4343       var c0 = IR[1];
   4344       var diff = IR[2];
   4345       var n = IR[3];
   4346 
   4347       var length = diff.length;
   4348 
   4349       return function constructInterpolatedFromIRResult(args) {
   4350         var x = n == 1 ? args[0] : Math.pow(args[0], n);
   4351 
   4352         var out = [];
   4353         for (var j = 0; j < length; ++j)
   4354           out.push(c0[j] + (x * diff[j]));
   4355 
   4356         return out;
   4357 
   4358       }
   4359     },
   4360 
   4361     constructStiched: function PDFFunction_constructStiched(fn, dict, xref) {
   4362       var domain = dict.get('Domain');
   4363 
   4364       if (!domain)
   4365         error('No domain');
   4366 
   4367       var inputSize = domain.length / 2;
   4368       if (inputSize != 1)
   4369         error('Bad domain for stiched function');
   4370 
   4371       var fnRefs = dict.get('Functions');
   4372       var fns = [];
   4373       for (var i = 0, ii = fnRefs.length; i < ii; ++i)
   4374         fns.push(PDFFunction.getIR(xref, xref.fetchIfRef(fnRefs[i])));
   4375 
   4376       var bounds = dict.get('Bounds');
   4377       var encode = dict.get('Encode');
   4378 
   4379       return [CONSTRUCT_STICHED, domain, bounds, encode, fns];
   4380     },
   4381 
   4382     constructStichedFromIR: function PDFFunction_constructStichedFromIR(IR) {
   4383       var domain = IR[1];
   4384       var bounds = IR[2];
   4385       var encode = IR[3];
   4386       var fnsIR = IR[4];
   4387       var fns = [];
   4388 
   4389       for (var i = 0, ii = fnsIR.length; i < ii; i++) {
   4390         fns.push(PDFFunction.fromIR(fnsIR[i]));
   4391       }
   4392 
   4393       return function constructStichedFromIRResult(args) {
   4394         var clip = function constructStichedFromIRClip(v, min, max) {
   4395           if (v > max)
   4396             v = max;
   4397           else if (v < min)
   4398             v = min;
   4399           return v;
   4400         };
   4401 
   4402         // clip to domain
   4403         var v = clip(args[0], domain[0], domain[1]);
   4404         // calulate which bound the value is in
   4405         for (var i = 0, ii = bounds.length; i < ii; ++i) {
   4406           if (v < bounds[i])
   4407             break;
   4408         }
   4409 
   4410         // encode value into domain of function
   4411         var dmin = domain[0];
   4412         if (i > 0)
   4413           dmin = bounds[i - 1];
   4414         var dmax = domain[1];
   4415         if (i < bounds.length)
   4416           dmax = bounds[i];
   4417 
   4418         var rmin = encode[2 * i];
   4419         var rmax = encode[2 * i + 1];
   4420 
   4421         var v2 = rmin + (v - dmin) * (rmax - rmin) / (dmax - dmin);
   4422 
   4423         // call the appropropriate function
   4424         return fns[i]([v2]);
   4425       };
   4426     },
   4427 
   4428     constructPostScript: function PDFFunction_constructPostScript(fn, dict,
   4429                                                                   xref) {
   4430       var domain = dict.get('Domain');
   4431       var range = dict.get('Range');
   4432 
   4433       if (!domain)
   4434         error('No domain.');
   4435 
   4436       if (!range)
   4437         error('No range.');
   4438 
   4439       var lexer = new PostScriptLexer(fn);
   4440       var parser = new PostScriptParser(lexer);
   4441       var code = parser.parse();
   4442 
   4443       return [CONSTRUCT_POSTSCRIPT, domain, range, code];
   4444     },
   4445 
   4446     constructPostScriptFromIR: function PDFFunction_constructPostScriptFromIR(
   4447                                           IR) {
   4448       var domain = IR[1];
   4449       var range = IR[2];
   4450       var code = IR[3];
   4451       var numOutputs = range.length / 2;
   4452       var evaluator = new PostScriptEvaluator(code);
   4453       // Cache the values for a big speed up, the cache size is limited though
   4454       // since the number of possible values can be huge from a PS function.
   4455       var cache = new FunctionCache();
   4456       return function constructPostScriptFromIRResult(args) {
   4457         var initialStack = [];
   4458         for (var i = 0, ii = (domain.length / 2); i < ii; ++i) {
   4459           initialStack.push(args[i]);
   4460         }
   4461 
   4462         var key = initialStack.join('_');
   4463         if (cache.has(key))
   4464           return cache.get(key);
   4465 
   4466         var stack = evaluator.execute(initialStack);
   4467         var transformed = [];
   4468         for (i = numOutputs - 1; i >= 0; --i) {
   4469           var out = stack.pop();
   4470           var rangeIndex = 2 * i;
   4471           if (out < range[rangeIndex])
   4472             out = range[rangeIndex];
   4473           else if (out > range[rangeIndex + 1])
   4474             out = range[rangeIndex + 1];
   4475           transformed[i] = out;
   4476         }
   4477         cache.set(key, transformed);
   4478         return transformed;
   4479       };
   4480     }
   4481   };
   4482 })();
   4483 
   4484 var FunctionCache = (function FunctionCacheClosure() {
   4485   // Of 10 PDF's with type4 functions the maxium number of distinct values seen
   4486   // was 256. This still may need some tweaking in the future though.
   4487   var MAX_CACHE_SIZE = 1024;
   4488   function FunctionCache() {
   4489     this.cache = {};
   4490     this.total = 0;
   4491   }
   4492   FunctionCache.prototype = {
   4493     has: function FunctionCache_has(key) {
   4494       return key in this.cache;
   4495     },
   4496     get: function FunctionCache_get(key) {
   4497       return this.cache[key];
   4498     },
   4499     set: function FunctionCache_set(key, value) {
   4500       if (this.total < MAX_CACHE_SIZE) {
   4501         this.cache[key] = value;
   4502         this.total++;
   4503       }
   4504     }
   4505   };
   4506   return FunctionCache;
   4507 })();
   4508 
   4509 var PostScriptStack = (function PostScriptStackClosure() {
   4510   var MAX_STACK_SIZE = 100;
   4511   function PostScriptStack(initialStack) {
   4512     this.stack = initialStack || [];
   4513   }
   4514 
   4515   PostScriptStack.prototype = {
   4516     push: function PostScriptStack_push(value) {
   4517       if (this.stack.length >= MAX_STACK_SIZE)
   4518         error('PostScript function stack overflow.');
   4519       this.stack.push(value);
   4520     },
   4521     pop: function PostScriptStack_pop() {
   4522       if (this.stack.length <= 0)
   4523         error('PostScript function stack underflow.');
   4524       return this.stack.pop();
   4525     },
   4526     copy: function PostScriptStack_copy(n) {
   4527       if (this.stack.length + n >= MAX_STACK_SIZE)
   4528         error('PostScript function stack overflow.');
   4529       var stack = this.stack;
   4530       for (var i = stack.length - n, j = n - 1; j >= 0; j--, i++)
   4531         stack.push(stack[i]);
   4532     },
   4533     index: function PostScriptStack_index(n) {
   4534       this.push(this.stack[this.stack.length - n - 1]);
   4535     },
   4536     // rotate the last n stack elements p times
   4537     roll: function PostScriptStack_roll(n, p) {
   4538       var stack = this.stack;
   4539       var l = stack.length - n;
   4540       var r = stack.length - 1, c = l + (p - Math.floor(p / n) * n), i, j, t;
   4541       for (i = l, j = r; i < j; i++, j--) {
   4542         t = stack[i]; stack[i] = stack[j]; stack[j] = t;
   4543       }
   4544       for (i = l, j = c - 1; i < j; i++, j--) {
   4545         t = stack[i]; stack[i] = stack[j]; stack[j] = t;
   4546       }
   4547       for (i = c, j = r; i < j; i++, j--) {
   4548         t = stack[i]; stack[i] = stack[j]; stack[j] = t;
   4549       }
   4550     }
   4551   };
   4552   return PostScriptStack;
   4553 })();
   4554 var PostScriptEvaluator = (function PostScriptEvaluatorClosure() {
   4555   function PostScriptEvaluator(operators, operands) {
   4556     this.operators = operators;
   4557     this.operands = operands;
   4558   }
   4559   PostScriptEvaluator.prototype = {
   4560     execute: function PostScriptEvaluator_execute(initialStack) {
   4561       var stack = new PostScriptStack(initialStack);
   4562       var counter = 0;
   4563       var operators = this.operators;
   4564       var length = operators.length;
   4565       var operator, a, b;
   4566       while (counter < length) {
   4567         operator = operators[counter++];
   4568         if (typeof operator == 'number') {
   4569           // Operator is really an operand and should be pushed to the stack.
   4570           stack.push(operator);
   4571           continue;
   4572         }
   4573         switch (operator) {
   4574           // non standard ps operators
   4575           case 'jz': // jump if false
   4576             b = stack.pop();
   4577             a = stack.pop();
   4578             if (!a)
   4579               counter = b;
   4580             break;
   4581           case 'j': // jump
   4582             a = stack.pop();
   4583             counter = a;
   4584             break;
   4585 
   4586           // all ps operators in alphabetical order (excluding if/ifelse)
   4587           case 'abs':
   4588             a = stack.pop();
   4589             stack.push(Math.abs(a));
   4590             break;
   4591           case 'add':
   4592             b = stack.pop();
   4593             a = stack.pop();
   4594             stack.push(a + b);
   4595             break;
   4596           case 'and':
   4597             b = stack.pop();
   4598             a = stack.pop();
   4599             if (isBool(a) && isBool(b))
   4600               stack.push(a && b);
   4601             else
   4602               stack.push(a & b);
   4603             break;
   4604           case 'atan':
   4605             a = stack.pop();
   4606             stack.push(Math.atan(a));
   4607             break;
   4608           case 'bitshift':
   4609             b = stack.pop();
   4610             a = stack.pop();
   4611             if (a > 0)
   4612               stack.push(a << b);
   4613             else
   4614               stack.push(a >> b);
   4615             break;
   4616           case 'ceiling':
   4617             a = stack.pop();
   4618             stack.push(Math.ceil(a));
   4619             break;
   4620           case 'copy':
   4621             a = stack.pop();
   4622             stack.copy(a);
   4623             break;
   4624           case 'cos':
   4625             a = stack.pop();
   4626             stack.push(Math.cos(a));
   4627             break;
   4628           case 'cvi':
   4629             a = stack.pop() | 0;
   4630             stack.push(a);
   4631             break;
   4632           case 'cvr':
   4633             // noop
   4634             break;
   4635           case 'div':
   4636             b = stack.pop();
   4637             a = stack.pop();
   4638             stack.push(a / b);
   4639             break;
   4640           case 'dup':
   4641             stack.copy(1);
   4642             break;
   4643           case 'eq':
   4644             b = stack.pop();
   4645             a = stack.pop();
   4646             stack.push(a == b);
   4647             break;
   4648           case 'exch':
   4649             stack.roll(2, 1);
   4650             break;
   4651           case 'exp':
   4652             b = stack.pop();
   4653             a = stack.pop();
   4654             stack.push(Math.pow(a, b));
   4655             break;
   4656           case 'false':
   4657             stack.push(false);
   4658             break;
   4659           case 'floor':
   4660             a = stack.pop();
   4661             stack.push(Math.floor(a));
   4662             break;
   4663           case 'ge':
   4664             b = stack.pop();
   4665             a = stack.pop();
   4666             stack.push(a >= b);
   4667             break;
   4668           case 'gt':
   4669             b = stack.pop();
   4670             a = stack.pop();
   4671             stack.push(a > b);
   4672             break;
   4673           case 'idiv':
   4674             b = stack.pop();
   4675             a = stack.pop();
   4676             stack.push((a / b) | 0);
   4677             break;
   4678           case 'index':
   4679             a = stack.pop();
   4680             stack.index(a);
   4681             break;
   4682           case 'le':
   4683             b = stack.pop();
   4684             a = stack.pop();
   4685             stack.push(a <= b);
   4686             break;
   4687           case 'ln':
   4688             a = stack.pop();
   4689             stack.push(Math.log(a));
   4690             break;
   4691           case 'log':
   4692             a = stack.pop();
   4693             stack.push(Math.log(a) / Math.LN10);
   4694             break;
   4695           case 'lt':
   4696             b = stack.pop();
   4697             a = stack.pop();
   4698             stack.push(a < b);
   4699             break;
   4700           case 'mod':
   4701             b = stack.pop();
   4702             a = stack.pop();
   4703             stack.push(a % b);
   4704             break;
   4705           case 'mul':
   4706             b = stack.pop();
   4707             a = stack.pop();
   4708             stack.push(a * b);
   4709             break;
   4710           case 'ne':
   4711             b = stack.pop();
   4712             a = stack.pop();
   4713             stack.push(a != b);
   4714             break;
   4715           case 'neg':
   4716             a = stack.pop();
   4717             stack.push(-b);
   4718             break;
   4719           case 'not':
   4720             a = stack.pop();
   4721             if (isBool(a) && isBool(b))
   4722               stack.push(a && b);
   4723             else
   4724               stack.push(a & b);
   4725             break;
   4726           case 'or':
   4727             b = stack.pop();
   4728             a = stack.pop();
   4729             if (isBool(a) && isBool(b))
   4730               stack.push(a || b);
   4731             else
   4732               stack.push(a | b);
   4733             break;
   4734           case 'pop':
   4735             stack.pop();
   4736             break;
   4737           case 'roll':
   4738             b = stack.pop();
   4739             a = stack.pop();
   4740             stack.roll(a, b);
   4741             break;
   4742           case 'round':
   4743             a = stack.pop();
   4744             stack.push(Math.round(a));
   4745             break;
   4746           case 'sin':
   4747             a = stack.pop();
   4748             stack.push(Math.sin(a));
   4749             break;
   4750           case 'sqrt':
   4751             a = stack.pop();
   4752             stack.push(Math.sqrt(a));
   4753             break;
   4754           case 'sub':
   4755             b = stack.pop();
   4756             a = stack.pop();
   4757             stack.push(a - b);
   4758             break;
   4759           case 'true':
   4760             stack.push(true);
   4761             break;
   4762           case 'truncate':
   4763             a = stack.pop();
   4764             a = a < 0 ? Math.ceil(a) : Math.floor(a);
   4765             stack.push(a);
   4766             break;
   4767           case 'xor':
   4768             b = stack.pop();
   4769             a = stack.pop();
   4770             if (isBool(a) && isBool(b))
   4771               stack.push(a != b);
   4772             else
   4773               stack.push(a ^ b);
   4774             break;
   4775           default:
   4776             error('Unknown operator ' + operator);
   4777             break;
   4778         }
   4779       }
   4780       return stack.stack;
   4781     }
   4782   };
   4783   return PostScriptEvaluator;
   4784 })();
   4785 
   4786 var PostScriptParser = (function PostScriptParserClosure() {
   4787   function PostScriptParser(lexer) {
   4788     this.lexer = lexer;
   4789     this.operators = [];
   4790     this.token;
   4791     this.prev;
   4792   }
   4793   PostScriptParser.prototype = {
   4794     nextToken: function PostScriptParser_nextToken() {
   4795       this.prev = this.token;
   4796       this.token = this.lexer.getToken();
   4797     },
   4798     accept: function PostScriptParser_accept(type) {
   4799       if (this.token.type == type) {
   4800         this.nextToken();
   4801         return true;
   4802       }
   4803       return false;
   4804     },
   4805     expect: function PostScriptParser_expect(type) {
   4806       if (this.accept(type))
   4807         return true;
   4808       error('Unexpected symbol: found ' + this.token.type + ' expected ' +
   4809             type + '.');
   4810     },
   4811     parse: function PostScriptParser_parse() {
   4812       this.nextToken();
   4813       this.expect(PostScriptTokenTypes.LBRACE);
   4814       this.parseBlock();
   4815       this.expect(PostScriptTokenTypes.RBRACE);
   4816       return this.operators;
   4817     },
   4818     parseBlock: function PostScriptParser_parseBlock() {
   4819       while (true) {
   4820         if (this.accept(PostScriptTokenTypes.NUMBER)) {
   4821           this.operators.push(this.prev.value);
   4822         } else if (this.accept(PostScriptTokenTypes.OPERATOR)) {
   4823           this.operators.push(this.prev.value);
   4824         } else if (this.accept(PostScriptTokenTypes.LBRACE)) {
   4825           this.parseCondition();
   4826         } else {
   4827           return;
   4828         }
   4829       }
   4830     },
   4831     parseCondition: function PostScriptParser_parseCondition() {
   4832       // Add two place holders that will be updated later
   4833       var conditionLocation = this.operators.length;
   4834       this.operators.push(null, null);
   4835 
   4836       this.parseBlock();
   4837       this.expect(PostScriptTokenTypes.RBRACE);
   4838       if (this.accept(PostScriptTokenTypes.IF)) {
   4839         // The true block is right after the 'if' so it just falls through on
   4840         // true else it jumps and skips the true block.
   4841         this.operators[conditionLocation] = this.operators.length;
   4842         this.operators[conditionLocation + 1] = 'jz';
   4843       } else if (this.accept(PostScriptTokenTypes.LBRACE)) {
   4844         var jumpLocation = this.operators.length;
   4845         this.operators.push(null, null);
   4846         var endOfTrue = this.operators.length;
   4847         this.parseBlock();
   4848         this.expect(PostScriptTokenTypes.RBRACE);
   4849         this.expect(PostScriptTokenTypes.IFELSE);
   4850         // The jump is added at the end of the true block to skip the false
   4851         // block.
   4852         this.operators[jumpLocation] = this.operators.length;
   4853         this.operators[jumpLocation + 1] = 'j';
   4854 
   4855         this.operators[conditionLocation] = endOfTrue;
   4856         this.operators[conditionLocation + 1] = 'jz';
   4857       } else {
   4858         error('PS Function: error parsing conditional.');
   4859       }
   4860     }
   4861   };
   4862   return PostScriptParser;
   4863 })();
   4864 
   4865 var PostScriptTokenTypes = {
   4866   LBRACE: 0,
   4867   RBRACE: 1,
   4868   NUMBER: 2,
   4869   OPERATOR: 3,
   4870   IF: 4,
   4871   IFELSE: 5
   4872 };
   4873 
   4874 var PostScriptToken = (function PostScriptTokenClosure() {
   4875   function PostScriptToken(type, value) {
   4876     this.type = type;
   4877     this.value = value;
   4878   }
   4879 
   4880   var opCache = {};
   4881 
   4882   PostScriptToken.getOperator = function PostScriptToken_getOperator(op) {
   4883     var opValue = opCache[op];
   4884     if (opValue)
   4885       return opValue;
   4886 
   4887     return opCache[op] = new PostScriptToken(PostScriptTokenTypes.OPERATOR, op);
   4888   };
   4889 
   4890   PostScriptToken.LBRACE = new PostScriptToken(PostScriptTokenTypes.LBRACE,
   4891                                                 '{');
   4892   PostScriptToken.RBRACE = new PostScriptToken(PostScriptTokenTypes.RBRACE,
   4893                                                 '}');
   4894   PostScriptToken.IF = new PostScriptToken(PostScriptTokenTypes.IF, 'IF');
   4895   PostScriptToken.IFELSE = new PostScriptToken(PostScriptTokenTypes.IFELSE,
   4896                                                 'IFELSE');
   4897   return PostScriptToken;
   4898 })();
   4899 
   4900 var PostScriptLexer = (function PostScriptLexerClosure() {
   4901   function PostScriptLexer(stream) {
   4902     this.stream = stream;
   4903   }
   4904   PostScriptLexer.prototype = {
   4905     getToken: function PostScriptLexer_getToken() {
   4906       var s = '';
   4907       var ch;
   4908       var comment = false;
   4909       var stream = this.stream;
   4910 
   4911       // skip comments
   4912       while (true) {
   4913         if (!(ch = stream.getChar()))
   4914           return EOF;
   4915 
   4916         if (comment) {
   4917           if (ch == '\x0a' || ch == '\x0d')
   4918             comment = false;
   4919         } else if (ch == '%') {
   4920           comment = true;
   4921         } else if (!Lexer.isSpace(ch)) {
   4922           break;
   4923         }
   4924       }
   4925       switch (ch) {
   4926         case '0': case '1': case '2': case '3': case '4':
   4927         case '5': case '6': case '7': case '8': case '9':
   4928         case '+': case '-': case '.':
   4929           return new PostScriptToken(PostScriptTokenTypes.NUMBER,
   4930                                       this.getNumber(ch));
   4931         case '{':
   4932           return PostScriptToken.LBRACE;
   4933         case '}':
   4934           return PostScriptToken.RBRACE;
   4935       }
   4936       // operator
   4937       var str = ch.toLowerCase();
   4938       while (true) {
   4939         ch = stream.lookChar();
   4940         if (ch === null)
   4941           break;
   4942         ch = ch.toLowerCase();
   4943         if (ch >= 'a' && ch <= 'z')
   4944           str += ch;
   4945         else
   4946           break;
   4947         stream.skip();
   4948       }
   4949       switch (str) {
   4950         case 'if':
   4951           return PostScriptToken.IF;
   4952         case 'ifelse':
   4953           return PostScriptToken.IFELSE;
   4954         default:
   4955           return PostScriptToken.getOperator(str);
   4956       }
   4957     },
   4958     getNumber: function PostScriptLexer_getNumber(ch) {
   4959       var str = ch;
   4960       var stream = this.stream;
   4961       while (true) {
   4962         ch = stream.lookChar();
   4963         if ((ch >= '0' && ch <= '9') || ch == '-' || ch == '.')
   4964           str += ch;
   4965         else
   4966           break;
   4967         stream.skip();
   4968       }
   4969       var value = parseFloat(str);
   4970       if (isNaN(value))
   4971         error('Invalid floating point number: ' + value);
   4972       return value;
   4973     }
   4974   };
   4975   return PostScriptLexer;
   4976 })();
   4977 
   4978 
   4979 /* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
   4980 /* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */
   4981 
   4982 'use strict';
   4983 
   4984 var ISOAdobeCharset = [
   4985   '.notdef', 'space', 'exclam', 'quotedbl', 'numbersign', 'dollar',
   4986   'percent', 'ampersand', 'quoteright', 'parenleft', 'parenright',
   4987   'asterisk', 'plus', 'comma', 'hyphen', 'period', 'slash', 'zero',
   4988   'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight',
   4989   'nine', 'colon', 'semicolon', 'less', 'equal', 'greater', 'question',
   4990   'at', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',
   4991   'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',
   4992   'bracketleft', 'backslash', 'bracketright', 'asciicircum', 'underscore',
   4993   'quoteleft', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l',
   4994   'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
   4995   'braceleft', 'bar', 'braceright', 'asciitilde', 'exclamdown', 'cent',
   4996   'sterling', 'fraction', 'yen', 'florin', 'section', 'currency',
   4997   'quotesingle', 'quotedblleft', 'guillemotleft', 'guilsinglleft',
   4998   'guilsinglright', 'fi', 'fl', 'endash', 'dagger', 'daggerdbl',
   4999   'periodcentered', 'paragraph', 'bullet', 'quotesinglbase',
   5000   'quotedblbase', 'quotedblright', 'guillemotright', 'ellipsis',
   5001   'perthousand', 'questiondown', 'grave', 'acute', 'circumflex', 'tilde',
   5002   'macron', 'breve', 'dotaccent', 'dieresis', 'ring', 'cedilla',
   5003   'hungarumlaut', 'ogonek', 'caron', 'emdash', 'AE', 'ordfeminine',
   5004   'Lslash', 'Oslash', 'OE', 'ordmasculine', 'ae', 'dotlessi', 'lslash',
   5005   'oslash', 'oe', 'germandbls', 'onesuperior', 'logicalnot', 'mu',
   5006   'trademark', 'Eth', 'onehalf', 'plusminus', 'Thorn', 'onequarter',
   5007   'divide', 'brokenbar', 'degree', 'thorn', 'threequarters', 'twosuperior',
   5008   'registered', 'minus', 'eth', 'multiply', 'threesuperior', 'copyright',
   5009   'Aacute', 'Acircumflex', 'Adieresis', 'Agrave', 'Aring', 'Atilde',
   5010   'Ccedilla', 'Eacute', 'Ecircumflex', 'Edieresis', 'Egrave', 'Iacute',
   5011   'Icircumflex', 'Idieresis', 'Igrave', 'Ntilde', 'Oacute', 'Ocircumflex',
   5012   'Odieresis', 'Ograve', 'Otilde', 'Scaron', 'Uacute', 'Ucircumflex',
   5013   'Udieresis', 'Ugrave', 'Yacute', 'Ydieresis', 'Zcaron', 'aacute',
   5014   'acircumflex', 'adieresis', 'agrave', 'aring', 'atilde', 'ccedilla',
   5015   'eacute', 'ecircumflex', 'edieresis', 'egrave', 'iacute', 'icircumflex',
   5016   'idieresis', 'igrave', 'ntilde', 'oacute', 'ocircumflex', 'odieresis',
   5017   'ograve', 'otilde', 'scaron', 'uacute', 'ucircumflex', 'udieresis',
   5018   'ugrave', 'yacute', 'ydieresis', 'zcaron'
   5019 ];
   5020 
   5021 var ExpertCharset = [
   5022   '.notdef', 'space', 'exclamsmall', 'Hungarumlautsmall', 'dollaroldstyle',
   5023   'dollarsuperior', 'ampersandsmall', 'Acutesmall', 'parenleftsuperior',
   5024   'parenrightsuperior', 'twodotenleader', 'onedotenleader', 'comma',
   5025   'hyphen', 'period', 'fraction', 'zerooldstyle', 'oneoldstyle',
   5026   'twooldstyle', 'threeoldstyle', 'fouroldstyle', 'fiveoldstyle',
   5027   'sixoldstyle', 'sevenoldstyle', 'eightoldstyle', 'nineoldstyle',
   5028   'colon', 'semicolon', 'commasuperior', 'threequartersemdash',
   5029   'periodsuperior', 'questionsmall', 'asuperior', 'bsuperior',
   5030   'centsuperior', 'dsuperior', 'esuperior', 'isuperior', 'lsuperior',
   5031   'msuperior', 'nsuperior', 'osuperior', 'rsuperior', 'ssuperior',
   5032   'tsuperior', 'ff', 'fi', 'fl', 'ffi', 'ffl', 'parenleftinferior',
   5033   'parenrightinferior', 'Circumflexsmall', 'hyphensuperior', 'Gravesmall',
   5034   'Asmall', 'Bsmall', 'Csmall', 'Dsmall', 'Esmall', 'Fsmall', 'Gsmall',
   5035   'Hsmall', 'Ismall', 'Jsmall', 'Ksmall', 'Lsmall', 'Msmall', 'Nsmall',
   5036   'Osmall', 'Psmall', 'Qsmall', 'Rsmall', 'Ssmall', 'Tsmall', 'Usmall',
   5037   'Vsmall', 'Wsmall', 'Xsmall', 'Ysmall', 'Zsmall', 'colonmonetary',
   5038   'onefitted', 'rupiah', 'Tildesmall', 'exclamdownsmall', 'centoldstyle',
   5039   'Lslashsmall', 'Scaronsmall', 'Zcaronsmall', 'Dieresissmall',
   5040   'Brevesmall', 'Caronsmall', 'Dotaccentsmall', 'Macronsmall',
   5041   'figuredash', 'hypheninferior', 'Ogoneksmall', 'Ringsmall',
   5042   'Cedillasmall', 'onequarter', 'onehalf', 'threequarters',
   5043   'questiondownsmall', 'oneeighth', 'threeeighths', 'fiveeighths',
   5044   'seveneighths', 'onethird', 'twothirds', 'zerosuperior', 'onesuperior',
   5045   'twosuperior', 'threesuperior', 'foursuperior', 'fivesuperior',
   5046   'sixsuperior', 'sevensuperior', 'eightsuperior', 'ninesuperior',
   5047   'zeroinferior', 'oneinferior', 'twoinferior', 'threeinferior',
   5048   'fourinferior', 'fiveinferior', 'sixinferior', 'seveninferior',
   5049   'eightinferior', 'nineinferior', 'centinferior', 'dollarinferior',
   5050   'periodinferior', 'commainferior', 'Agravesmall', 'Aacutesmall',
   5051   'Acircumflexsmall', 'Atildesmall', 'Adieresissmall', 'Aringsmall',
   5052   'AEsmall', 'Ccedillasmall', 'Egravesmall', 'Eacutesmall',
   5053   'Ecircumflexsmall', 'Edieresissmall', 'Igravesmall', 'Iacutesmall',
   5054   'Icircumflexsmall', 'Idieresissmall', 'Ethsmall', 'Ntildesmall',
   5055   'Ogravesmall', 'Oacutesmall', 'Ocircumflexsmall', 'Otildesmall',
   5056   'Odieresissmall', 'OEsmall', 'Oslashsmall', 'Ugravesmall', 'Uacutesmall',
   5057   'Ucircumflexsmall', 'Udieresissmall', 'Yacutesmall', 'Thornsmall',
   5058   'Ydieresissmall'
   5059 ];
   5060 
   5061 var ExpertSubsetCharset = [
   5062   '.notdef', 'space', 'dollaroldstyle', 'dollarsuperior',
   5063   'parenleftsuperior', 'parenrightsuperior', 'twodotenleader',
   5064   'onedotenleader', 'comma', 'hyphen', 'period', 'fraction',
   5065   'zerooldstyle', 'oneoldstyle', 'twooldstyle', 'threeoldstyle',
   5066   'fouroldstyle', 'fiveoldstyle', 'sixoldstyle', 'sevenoldstyle',
   5067   'eightoldstyle', 'nineoldstyle', 'colon', 'semicolon', 'commasuperior',
   5068   'threequartersemdash', 'periodsuperior', 'asuperior', 'bsuperior',
   5069   'centsuperior', 'dsuperior', 'esuperior', 'isuperior', 'lsuperior',
   5070   'msuperior', 'nsuperior', 'osuperior', 'rsuperior', 'ssuperior',
   5071   'tsuperior', 'ff', 'fi', 'fl', 'ffi', 'ffl', 'parenleftinferior',
   5072   'parenrightinferior', 'hyphensuperior', 'colonmonetary', 'onefitted',
   5073   'rupiah', 'centoldstyle', 'figuredash', 'hypheninferior', 'onequarter',
   5074   'onehalf', 'threequarters', 'oneeighth', 'threeeighths', 'fiveeighths',
   5075   'seveneighths', 'onethird', 'twothirds', 'zerosuperior', 'onesuperior',
   5076   'twosuperior', 'threesuperior', 'foursuperior', 'fivesuperior',
   5077   'sixsuperior', 'sevensuperior', 'eightsuperior', 'ninesuperior',
   5078   'zeroinferior', 'oneinferior', 'twoinferior', 'threeinferior',
   5079   'fourinferior', 'fiveinferior', 'sixinferior', 'seveninferior',
   5080   'eightinferior', 'nineinferior', 'centinferior', 'dollarinferior',
   5081   'periodinferior', 'commainferior'
   5082 ];
   5083 
   5084 
   5085 /* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
   5086 /* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */
   5087 
   5088 'use strict';
   5089 
   5090 var CIDToUnicodeMaps = {
   5091   'Adobe-Japan1': [[32, 160], {f: 12, c: 33}, [45, 8209], {f: 46, c: 46}, 165,
   5092     {f: 2, c: 93}, [95, 818], [96, 768], {f: 27, c: 97}, 166, 125, [732, 771],
   5093     [700, 8217], 92, [699, 8216], 124, [126, 8764], {f: 3, c: 161}, 8260, 402,
   5094     0, 164, 8220, 171, {f: 2, c: 8249}, {f: 2, c: 64257}, [8210, 8211], 0, 0,
   5095     [183, 8729], 0, 8226, 8218, 8222, 8221, 187, 0, 0, 191, {f: 2, c: 769},
   5096     [175, 772], {f: 3, c: 774}, 778, [184, 807], 779, 808, 780, [822, 8212],
   5097     198, 170, 321, 216, 338, 186, 230, 305, 322, 248, 339, 223, 173, 169, 172,
   5098     174, 0, 0, {f: 2, c: 178}, 181, 185, {f: 3, c: 188}, {f: 6, c: 192},
   5099     {f: 16, c: 199}, 0, {f: 6, c: 217}, {f: 6, c: 224}, {f: 16, c: 231}, 0,
   5100     {f: 7, c: 249}, 352, 376, 381, [773, 8254], 353, 8482, 382, 0, 8194,
   5101     {s: 91}, 65512, {s: 3}, {f: 63, c: 65377}, {s: 243}, [8195, 12288],
   5102     {f: 2, c: 12289}, 65292, 65294, 12539, {f: 2, c: 65306}, 65311, 65281,
   5103     {f: 2, c: 12443}, 180, 65344, 168, 65342, 65507, 65343, {f: 2, c: 12541},
   5104     {f: 2, c: 12445}, 12291, 20189, {f: 3, c: 12293}, 12540, 8213, 8208, 65295,
   5105     65340, [12316, 65374], 8214, 65372, 8230, 8229, {s: 4}, {f: 2, c: 65288},
   5106     {f: 2, c: 12308}, 65339, 65341, 65371, 65373, {f: 10, c: 12296}, 65291,
   5107     [8722, 65293], 177, 215, 247, 65309, 8800, 65308, 65310, {f: 2, c: 8806},
   5108     8734, 8756, 9794, 9792, 176, {f: 2, c: 8242}, 8451, 65509, 65284,
   5109     {f: 2, c: 65504}, 65285, 65283, 65286, 65290, 65312, 167, 9734, 9733, 9675,
   5110     9679, 9678, 9671, 9670, 9633, 9632, 9651, 9650, 9661, 9660, 8251, 12306,
   5111     8594, {f: 2, c: 8592}, 8595, 12307, 8712, 8715, {f: 2, c: 8838},
   5112     {f: 2, c: 8834}, 8746, 8745, {f: 2, c: 8743}, 65506, 8658, 8660, 8704,
   5113     8707, 8736, 8869, 8978, 8706, 8711, 8801, 8786, {f: 2, c: 8810}, 8730,
   5114     8765, 8733, 8757, {f: 2, c: 8747}, 8491, 8240, 9839, 9837, 9834,
   5115     {f: 2, c: 8224}, 182, 9711, {f: 10, c: 65296}, {f: 26, c: 65313},
   5116     {f: 26, c: 65345}, {f: 83, c: 12353}, {f: 86, c: 12449}, {f: 17, c: 913},
   5117     {f: 7, c: 931}, {f: 17, c: 945}, {f: 7, c: 963}, {f: 6, c: 1040}, 1025,
   5118     {f: 32, c: 1046}, 1105, {f: 26, c: 1078}, 20124, 21782, 23043, 38463,
   5119     21696, 24859, 25384, 23030, 36898, 33909, 33564, 31312, 24746, 25569,
   5120     28197, 26093, 33894, 33446, 39925, 26771, 22311, 26017, 25201, 23451,
   5121     22992, 34427, 39156, 32098, 32190, 39822, 25110, 31903, 34999, 23433,
   5122     24245, 25353, 26263, 26696, 38343, 38797, 26447, 20197, 20234, 20301,
   5123     20381, 20553, 22258, 22839, 22996, 23041, 23561, 24799, 24847, 24944,
   5124     26131, 26885, 28858, 30031, 30064, 31227, 32173, 32239, 32963, 33806,
   5125     [12176, 34915], 35586, 36949, 36986, 21307, 20117, 20133, 22495, 32946,
   5126     37057, 30959, [12032, 19968], 22769, 28322, 36920, 31282, 33576, 33419,
   5127     39983, 20801, 21360, 21693, 21729, 22240, 23035, 24341, 39154, 28139,
   5128     32996, 34093, 38498, 38512, 38560, 38907, 21515, 21491, 23431, 28879,
   5129     [12155, 32701], 36802, [12204, 38632], 21359, 40284, 31418, 19985, 30867,
   5130     [12165, 33276], 28198, 22040, 21764, 27421, 34074, 39995, 23013, 21417,
   5131     28006, [12128, 29916], 38287, 22082, 20113, 36939, 38642, 33615, 39180,
   5132     21473, 21942, 23344, 24433, 26144, 26355, 26628, 27704, 27891, 27945,
   5133     29787, 30408, 31310, 38964, 33521, 34907, 35424, 37613, 28082, 30123,
   5134     30410, 39365, 24742, 35585, 36234, 38322, 27022, 21421, 20870, 22290,
   5135     22576, 22852, 23476, 24310, 24616, 25513, 25588, 27839, 28436, 28814,
   5136     28948, 29017, 29141, 29503, 32257, 33398, 33489, 34199, 36960, 37467,
   5137     40219, 22633, 26044, 27738, 29989, 20985, 22830, 22885, 24448, 24540,
   5138     25276, 26106, 27178, 27431, 27572, 29579, 32705, 35158, 40236, 40206,
   5139     [12009, 40644], 23713, 27798, 33659, 20740, 23627, 25014, 33222, 26742,
   5140     29281, [12036, 20057], 20474, 21368, 24681, 28201, 31311, [12211, 38899],
   5141     19979, 21270, 20206, 20309, 20285, 20385, 20339, 21152, 21487, 22025,
   5142     22799, 23233, 23478, 23521, 31185, 26247, 26524, 26550, 27468, 27827,
   5143     [12117, 28779], 29634, 31117, [12146, 31166], 31292, 31623, 33457, 33499,
   5144     33540, 33655, 33775, 33747, 34662, 35506, 22057, 36008, 36838, 36942,
   5145     38686, 34442, 20420, 23784, 25105, [12123, 29273], 30011, 33253, 33469,
   5146     34558, 36032, 38597, 39187, 39381, 20171, 20250, 35299, 22238, 22602,
   5147     22730, 24315, 24555, 24618, 24724, 24674, 25040, 25106, 25296, 25913,
   5148     39745, 26214, 26800, 28023, 28784, 30028, 30342, 32117, 33445, 34809,
   5149     38283, 38542, [12185, 35997], 20977, 21182, 22806, 21683, 23475, 23830,
   5150     24936, 27010, 28079, 30861, 33995, 34903, 35442, 37799, 39608, 28012,
   5151     39336, 34521, 22435, 26623, 34510, 37390, 21123, 22151, 21508, 24275,
   5152     25313, 25785, 26684, 26680, 27579, 29554, 30906, 31339, 35226,
   5153     [12179, 35282], 36203, 36611, 37101, 38307, 38548, [12208, 38761], 23398,
   5154     23731, 27005, {f: 2, c: 38989}, 25499, 31520, 27179, 27263, 26806, 39949,
   5155     28511, 21106, 21917, 24688, 25324, 27963, 28167, 28369, 33883, 35088,
   5156     36676, 19988, 39993, 21494, 26907, 27194, 38788, 26666, 20828, 31427,
   5157     33970, 37340, 37772, 22107, 40232, 26658, 33541, 33841, 31909, 21000,
   5158     33477, [12129, 29926], 20094, 20355, 20896, 23506, 21002, 21208, 21223,
   5159     24059, 21914, 22570, 23014, 23436, 23448, 23515, [12082, 24178], 24185,
   5160     24739, 24863, 24931, 25022, 25563, 25954, 26577, 26707, 26874, 27454,
   5161     27475, 27735, 28450, 28567, 28485, 29872, [12130, 29976], 30435, 30475,
   5162     31487, 31649, 31777, 32233, [12152, 32566], 32752, 32925, 33382, 33694,
   5163     35251, 35532, 36011, 36996, 37969, 38291, 38289, 38306, 38501, 38867,
   5164     39208, 33304, 20024, 21547, 23736, 24012, 29609, 30284, 30524, 23721,
   5165     32747, 36107, 38593, 38929, 38996, 39000, 20225, 20238, 21361, 21916,
   5166     22120, 22522, 22855, 23305, 23492, 23696, 24076, 24190, 24524, 25582,
   5167     26426, 26071, 26082, 26399, 26827, 26820, 27231, 24112, 27589, 27671,
   5168     27773, 30079, 31048, 23395, 31232, 32000, 24509, 35215, 35352, 36020,
   5169     36215, 36556, 36637, 39138, 39438, [12004, 12225, 39740], [12018, 20096],
   5170     20605, 20736, 22931, 23452, 25135, 25216, 25836, 27450, 29344, 30097,
   5171     31047, 32681, 34811, 35516, 35696, 25516, 33738, 38816, 21513, 21507,
   5172     21931, 26708, 27224, 35440, 30759, 26485, [12233, 40653], 21364, 23458,
   5173     33050, 34384, 36870, 19992, 20037, 20167, 20241, 21450, 21560, 23470,
   5174     [12088, 24339], 24613, 25937, 26429, 27714, 27762, 27875, 28792, 29699,
   5175     31350, 31406, 31496, 32026, 31998, 32102, 26087, [12124, 29275], 21435,
   5176     23621, 24040, 25298, 25312, 25369, 28192, 34394, 35377, 36317, 37624,
   5177     28417, 31142, [12226, 39770], 20136, {f: 2, c: 20139}, 20379, 20384, 20689,
   5178     20807, 31478, 20849, 20982, 21332, 21281, 21375, 21483, 21932, 22659,
   5179     23777, 24375, 24394, 24623, 24656, 24685, 25375, 25945, 27211, 27841,
   5180     29378, 29421, 30703, 33016, 33029, 33288, 34126, 37111, 37857, 38911,
   5181     39255, 39514, 20208, 20957, 23597, 26241, 26989, 23616, 26354, 26997,
   5182     [12127, 29577], 26704, 31873, 20677, 21220, 22343, [12081, 24062], 37670,
   5183     [12100, 26020], 27427, 27453, 29748, 31105, 31165, 31563, 32202, 33465,
   5184     33740, 34943, 35167, 35641, 36817, [12198, 37329], 21535, 37504, 20061,
   5185     20534, 21477, 21306, 29399, 29590, 30697, 33510, 36527, 39366, 39368,
   5186     39378, 20855, 24858, 34398, 21936, 31354, 20598, 23507, 36935, 38533,
   5187     20018, 27355, 37351, 23633, 23624, 25496, 31391, 27795, 38772, 36705,
   5188     31402, 29066, 38536, 31874, 26647, 32368, 26705, 37740, 21234, 21531,
   5189     34219, 35347, 32676, 36557, 37089, 21350, 34952, 31041, 20418, 20670,
   5190     21009, 20804, 21843, 22317, 29674, 22411, 22865, 24418, 24452, 24693,
   5191     24950, 24935, 25001, 25522, 25658, 25964, 26223, 26690, 28179, 30054,
   5192     31293, 31995, 32076, 32153, 32331, 32619, 33550, 33610, 34509, 35336,
   5193     35427, 35686, 36605, 38938, 40335, 33464, 36814, 39912, 21127, 25119,
   5194     25731, 28608, 38553, 26689, 20625, [12107, 27424], 27770, 28500,
   5195     [12147, 31348], 32080, [12174, 34880], 35363, [12105, 26376], 20214, 20537,
   5196     20518, 20581, 20860, 21048, 21091, 21927, 22287, 22533, 23244, 24314,
   5197     25010, 25080, 25331, 25458, 26908, 27177, 29309, [12125, 29356], 29486,
   5198     30740, 30831, 32121, 30476, 32937, [12178, 35211], 35609, 36066, 36562,
   5199     36963, 37749, 38522, 38997, 39443, 40568, 20803, 21407, 21427, 24187,
   5200     24358, 28187, 28304, [12126, 29572], 29694, 32067, 33335, [12180, 35328],
   5201     35578, 38480, 20046, 20491, 21476, 21628, 22266, 22993, 23396,
   5202     [12080, 24049], 24235, 24359, [12094, 25144], 25925, 26543, 28246, 29392,
   5203     31946, 34996, 32929, 32993, 33776, [11969, 34382], 35463, 36328, 37431,
   5204     38599, 39015, [12238, 40723], 20116, 20114, 20237, 21320, 21577, 21566,
   5205     23087, 24460, 24481, 24735, 26791, 27278, 29786, 30849, 35486, 35492,
   5206     35703, 37264, 20062, 39881, 20132, 20348, 20399, 20505, 20502, 20809,
   5207     20844, 21151, 21177, 21246, 21402, [12061, 21475], 21521, 21518, 21897,
   5208     22353, 22434, 22909, 23380, 23389, 23439, [12079, 24037], 24039, 24055,
   5209     24184, 24195, 24218, 24247, 24344, 24658, 24908, 25239, 25304, 25511,
   5210     25915, 26114, 26179, 26356, 26477, 26657, 26775, 27083, 27743, 27946,
   5211     28009, 28207, 28317, 30002, 30343, 30828, 31295, 31968, 32005, 32024,
   5212     32094, 32177, 32789, 32771, 32943, 32945, 33108, 33167, 33322, 33618,
   5213     [12175, 34892], 34913, 35611, 36002, 36092, 37066, 37237, 37489, 30783,
   5214     37628, 38308, 38477, 38917, [12217, 39321], [12220, 39640], 40251, 21083,
   5215     21163, 21495, 21512, 22741, 25335, 28640, 35946, 36703, 40633, 20811,
   5216     21051, 21578, 22269, 31296, 37239, 40288, [12234, 40658], 29508, 28425,
   5217     33136, 29969, 24573, 24794, [12219, 39592], 29403, 36796, 27492, 38915,
   5218     20170, 22256, 22372, 22718, 23130, 24680, 25031, 26127, 26118, 26681,
   5219     26801, 28151, 30165, 32058, [12169, 33390], 39746, 20123, 20304, 21449,
   5220     21766, 23919, 24038, 24046, 26619, 27801, 29811, 30722, 35408, 37782,
   5221     35039, 22352, 24231, 25387, 20661, 20652, 20877, 26368, 21705, 22622,
   5222     22971, 23472, 24425, 25165, 25505, 26685, 27507, 28168, 28797, 37319,
   5223     29312, 30741, 30758, 31085, 25998, 32048, 33756, 35009, 36617, 38555,
   5224     21092, 22312, 26448, 32618, 36001, 20916, 22338, 38442, 22586, 27018,
   5225     32948, 21682, 23822, 22524, 30869, 40442, 20316, 21066, 21643, 25662,
   5226     26152, 26388, 26613, 31364, 31574, 32034, 37679, 26716, 39853, 31545,
   5227     21273, 20874, 21047, 23519, 25334, 25774, 25830, 26413, 27578, 34217,
   5228     38609, 30352, 39894, 25420, 37638, 39851, [12139, 30399], 26194, 19977,
   5229     20632, 21442, [12077, 23665], 24808, 25746, 25955, 26719, 29158, 29642,
   5230     29987, 31639, 32386, 34453, 35715, 36059, 37240, 39184, 26028, 26283,
   5231     27531, 20181, 20180, 20282, 20351, 21050, 21496, 21490, 21987, 22235,
   5232     [12064, 22763], 22987, 22985, 23039, [12070, 23376], 23629, 24066, 24107,
   5233     24535, 24605, 25351, [12096, 25903], 23388, 26031, 26045, 26088, 26525,
   5234     [12108, 27490], 27515, [12114, 27663], 29509, 31049, 31169, [12151, 31992],
   5235     32025, 32043, 32930, 33026, [12164, 33267], 35222, 35422, 35433, 35430,
   5236     35468, 35566, 36039, 36060, 38604, 39164, [12013, 27503], 20107, 20284,
   5237     20365, 20816, 23383, 23546, 24904, 25345, 26178, 27425, 28363, 27835,
   5238     29246, 29885, 30164, 30913, [12144, 31034], [12157, 32780], [12159, 32819],
   5239     [12163, 33258], 33940, 36766, 27728, [12229, 40575], 24335, 35672, 40235,
   5240     31482, 36600, 23437, 38635, 19971, 21489, 22519, 22833, 23241, 23460,
   5241     24713, 28287, 28422, 30142, 36074, 23455, 34048, 31712, 20594, 26612,
   5242     33437, 23649, 34122, 32286, 33294, 20889, 23556, 25448, 36198, 26012,
   5243     29038, 31038, 32023, 32773, 35613, [12190, 36554], 36974, 34503, 37034,
   5244     20511, 21242, 23610, 26451, 28796, 29237, 37196, 37320, 37675, 33509,
   5245     23490, 24369, 24825, 20027, 21462, 23432, [12095, 25163], 26417, 27530,
   5246     29417, 29664, 31278, 33131, 36259, 37202, [12216, 39318], 20754, 21463,
   5247     21610, 23551, 25480, 27193, 32172, 38656, 22234, 21454, 21608, 23447,
   5248     23601, 24030, 20462, 24833, 25342, 27954, 31168, 31179, 32066, 32333,
   5249     32722, 33261, [12168, 33311], 33936, 34886, 35186, 35728, 36468, 36655,
   5250     36913, 37195, 37228, 38598, 37276, 20160, 20303, 20805, [12055, 21313],
   5251     24467, 25102, 26580, 27713, 28171, 29539, 32294, 37325, 37507, 21460,
   5252     22809, 23487, 28113, 31069, 32302, 31899, 22654, 29087, 20986, 34899,
   5253     36848, 20426, 23803, 26149, 30636, 31459, 33308, 39423, 20934, 24490,
   5254     26092, 26991, 27529, 28147, 28310, 28516, 30462, 32020, 24033, 36981,
   5255     37255, 38918, 20966, 21021, 25152, 26257, 26329, 28186, 24246, 32210,
   5256     32626, 26360, 34223, 34295, 35576, 21161, 21465, [12069, 22899], 24207,
   5257     24464, 24661, 37604, 38500, 20663, 20767, 21213, 21280, 21319, 21484,
   5258     21736, 21830, 21809, 22039, 22888, 22974, 23100, 23477, 23558,
   5259     [12073, 23567], 23569, 23578, 24196, 24202, 24288, 24432, 25215, 25220,
   5260     25307, 25484, 25463, 26119, 26124, 26157, 26230, 26494, 26786, 27167,
   5261     27189, 27836, 28040, 28169, 28248, 28988, 28966, 29031, 30151, 30465,
   5262     30813, 30977, 31077, 31216, 31456, 31505, 31911, 32057, 32918, 33750,
   5263     33931, 34121, 34909, 35059, 35359, 35388, 35412, 35443, 35937, 36062,
   5264     37284, 37478, 37758, 37912, 38556, 38808, 19978, 19976, 19998, 20055,
   5265     20887, 21104, 22478, 22580, 22732, 23330, 24120, 24773, 25854, 26465,
   5266     26454, 27972, 29366, 30067, 31331, 33976, 35698, 37304, 37664, 22065,
   5267     22516, 39166, 25325, 26893, 27542, 29165, 32340, 32887, [12170, 33394],
   5268     35302, [12215, 39135], 34645, 36785, 23611, 20280, 20449, 20405, 21767,
   5269     23072, 23517, 23529, [12092, 24515], 24910, 25391, 26032, 26187, 26862,
   5270     27035, 28024, 28145, 30003, 30137, 30495, 31070, 31206, 32051,
   5271     [12162, 33251], 33455, 34218, 35242, 35386, [12189, 36523], [12191, 36763],
   5272     36914, 37341, 38663, [12040, 20154], 20161, 20995, 22645, 22764, 23563,
   5273     29978, 23613, 33102, 35338, 36805, 38499, 38765, 31525, 35535, 38920,
   5274     37218, 22259, 21416, 36887, 21561, 22402, 24101, 25512, [12116, 27700],
   5275     28810, 30561, 31883, 32736, 34928, 36930, 37204, 37648, 37656, 38543,
   5276     29790, 39620, 23815, 23913, 25968, 26530, 36264, 38619, 25454, 26441,
   5277     26905, 33733, 38935, 38592, 35070, 28548, 25722, [12072, 23544], 19990,
   5278     28716, 30045, 26159, 20932, 21046, 21218, 22995, 24449, 24615, 25104,
   5279     25919, 25972, 26143, 26228, 26866, 26646, 27491, 28165, 29298,
   5280     [12131, 29983], 30427, 31934, 32854, 22768, 35069, [11972, 35199], 35488,
   5281     35475, 35531, 36893, 37266, [11992, 38738], 38745, [12011, 25993], 31246,
   5282     33030, 38587, 24109, 24796, 25114, 26021, 26132, 26512, [12143, 30707],
   5283     31309, 31821, 32318, 33034, 36012, [12186, 36196], 36321, 36447, 30889,
   5284     20999, 25305, 25509, 25666, 25240, 35373, 31363, 31680, 35500, 38634,
   5285     32118, [12166, 33292], 34633, 20185, 20808, 21315, 21344, 23459, 23554,
   5286     23574, 24029, 25126, 25159, 25776, 26643, 26676, 27849, 27973, 27927,
   5287     26579, 28508, 29006, 29053, 26059, 31359, 31661, 32218, 32330, 32680,
   5288     33146, [12167, 33307], 33337, 34214, 35438, 36046, 36341, 36984, 36983,
   5289     37549, 37521, 38275, 39854, 21069, 21892, 28472, 28982, 20840, 31109,
   5290     32341, 33203, 31950, 22092, 22609, 23720, 25514, 26366, 26365, 26970,
   5291     29401, 30095, 30094, 30990, 31062, 31199, 31895, 32032, 32068, 34311,
   5292     35380, 38459, 36961, [12239, 40736], 20711, 21109, 21452, 21474, 20489,
   5293     21930, 22766, 22863, 29245, 23435, 23652, 21277, 24803, 24819, 25436,
   5294     25475, 25407, 25531, 25805, 26089, 26361, 24035, 27085, 27133, 28437,
   5295     29157, 20105, 30185, 30456, 31379, 31967, 32207, 32156, 32865, 33609,
   5296     33624, 33900, 33980, 34299, 35013, [12187, 36208], 36865, 36973, 37783,
   5297     38684, 39442, 20687, 22679, 24974, 33235, 34101, 36104, 36896, 20419,
   5298     20596, 21063, 21363, 24687, 25417, 26463, 28204, [12188, 36275], 36895,
   5299     20439, 23646, 36042, 26063, 32154, 21330, 34966, 20854, 25539, 23384,
   5300     23403, 23562, 25613, 26449, 36956, 20182, 22810, 22826, 27760, 35409,
   5301     21822, 22549, 22949, 24816, 25171, 26561, 33333, 26965, 38464, 39364,
   5302     39464, 20307, 22534, 23550, 32784, 23729, 24111, 24453, 24608, 24907,
   5303     25140, 26367, 27888, 28382, 32974, 33151, 33492, 34955, 36024, 36864,
   5304     36910, 38538, 40667, 39899, 20195, 21488, [12068, 22823], 31532, 37261,
   5305     38988, 40441, 28381, 28711, 21331, 21828, 23429, 25176, 25246, 25299,
   5306     27810, 28655, 29730, 35351, 37944, 28609, 35582, 33592, 20967, 34552,
   5307     21482, 21481, 20294, 36948, [12192, 36784], 22890, 33073, 24061, 31466,
   5308     36799, 26842, [12181, 35895], 29432, 40008, 27197, 35504, 20025, 21336,
   5309     22022, 22374, 25285, 25506, 26086, 27470, 28129, 28251, 28845, 30701,
   5310     31471, 31658, 32187, 32829, 32966, 34507, 35477, 37723, 22243, 22727,
   5311     24382, 26029, 26262, 27264, 27573, 30007, 35527, 20516, 30693, 22320,
   5312     24347, 24677, 26234, 27744, 30196, 31258, 32622, 33268, 34584, 36933,
   5313     39347, 31689, 30044, [12149, 31481], 31569, 33988, 36880, 31209, 31378,
   5314     33590, 23265, 30528, 20013, 20210, 23449, 24544, 25277, 26172, 26609,
   5315     27880, [12173, 34411], 34935, 35387, 37198, 37619, 39376, 27159, 28710,
   5316     29482, 33511, 33879, 36015, 19969, 20806, 20939, 21899, 23541, 24086,
   5317     24115, 24193, 24340, 24373, 24427, 24500, 25074, 25361, 26274, 26397,
   5318     28526, 29266, 30010, 30522, 32884, 33081, 33144, 34678, 35519, 35548,
   5319     36229, 36339, 37530, [11985, 12199, 38263], 38914, [12227, 40165], 21189,
   5320     25431, 30452, 26389, 27784, 29645, 36035, 37806, 38515, 27941, 22684,
   5321     26894, 27084, 36861, 37786, 30171, 36890, 22618, 26626, 25524, 27131,
   5322     20291, 28460, 26584, 36795, 34086, 32180, 37716, 26943, 28528, 22378,
   5323     22775, 23340, 32044, [12118, 29226], 21514, 37347, 40372, 20141, 20302,
   5324     20572, 20597, 21059, 35998, 21576, 22564, 23450, 24093, 24213, 24237,
   5325     24311, 24351, 24716, 25269, 25402, 25552, 26799, 27712, 30855, 31118,
   5326     31243, 32224, 33351, 35330, 35558, 36420, 36883, 37048, 37165, 37336,
   5327     [12237, 40718], 27877, 25688, 25826, 25973, 28404, 30340, 31515, 36969,
   5328     37841, 28346, 21746, 24505, 25764, 36685, 36845, 37444, 20856, 22635,
   5329     22825, 23637, 24215, 28155, 32399, 29980, 36028, 36578, 39003, 28857,
   5330     20253, 27583, 28593, [12133, 30000], 38651, 20814, 21520, 22581, 22615,
   5331     22956, 23648, 24466, [12099, 26007], 26460, 28193, 30331, 33759, 36077,
   5332     36884, 37117, 37709, 30757, 30778, 21162, 24230, [12063, 22303], 22900,
   5333     24594, 20498, 20826, 20908, 20941, [12049, 20992], 21776, 22612, 22616,
   5334     22871, 23445, 23798, 23947, 24764, 25237, 25645, 26481, 26691, 26812,
   5335     26847, 30423, 28120, 28271, 28059, 28783, 29128, 24403, 30168, 31095,
   5336     31561, 31572, 31570, 31958, 32113, 21040, 33891, 34153, 34276, 35342,
   5337     35588, [12182, 35910], 36367, 36867, 36879, 37913, 38518, 38957, 39472,
   5338     38360, 20685, 21205, 21516, 22530, 23566, 24999, 25758, 27934, 30643,
   5339     31461, 33012, 33796, 36947, 37509, 23776, 40199, 21311, 24471, 24499,
   5340     28060, 29305, 30563, 31167, 31716, 27602, 29420, 35501, 26627, 27233,
   5341     20984, 31361, 26932, 23626, 40182, 33515, 23493, [12195, 37193], 28702,
   5342     22136, 23663, 24775, 25958, 27788, 35930, 36929, 38931, 21585, 26311,
   5343     37389, 22856, 37027, 20869, 20045, 20970, 34201, 35598, 28760, 25466,
   5344     37707, 26978, 39348, 32260, 30071, 21335, 26976, 36575, 38627, 27741,
   5345     [12038, 20108], 23612, 24336, 36841, 21250, 36049, [12161, 32905], 34425,
   5346     24319, [12103, 26085], 20083, [12042, 20837], 22914, 23615, 38894, 20219,
   5347     22922, 24525, 35469, 28641, 31152, 31074, 23527, 33905, 29483, 29105,
   5348     24180, 24565, 25467, 25754, 29123, 31896, 20035, 24316, 20043, 22492,
   5349     22178, 24745, 28611, 32013, 33021, 33075, 33215, 36786, 35223, 34468,
   5350     24052, 25226, 25773, 35207, 26487, 27874, 27966, 29750, 30772, 23110,
   5351     32629, 33453, [12218, 39340], 20467, 24259, 25309, 25490, 25943, 26479,
   5352     30403, 29260, 32972, 32954, 36649, 37197, 20493, 22521, 23186, 26757,
   5353     26995, 29028, 29437, 36023, 22770, 36064, 38506, 36889, 34687, 31204,
   5354     30695, 33833, 20271, 21093, 21338, 25293, 26575, 27850, [12137, 30333],
   5355     31636, 31893, 33334, 34180, 36843, 26333, 28448, 29190, 32283, 33707,
   5356     39361, [12008, 40614], 20989, 31665, 30834, 31672, 32903, 31560, 27368,
   5357     24161, 32908, 30033, 30048, [12043, 20843], 37474, 28300, 30330, 37271,
   5358     39658, 20240, 32624, 25244, 31567, 38309, 40169, 22138, 22617, 34532,
   5359     38588, 20276, 21028, 21322, 21453, 21467, 24070, 25644, 26001, 26495,
   5360     27710, 27726, 29256, 29359, 29677, 30036, 32321, 33324, 34281, 36009,
   5361     31684, [12196, 37318], 29033, 38930, 39151, 25405, 26217, 30058, 30436,
   5362     30928, 34115, 34542, 21290, 21329, 21542, 22915, 24199, 24444, 24754,
   5363     25161, 25209, 25259, 26000, [12112, 27604], 27852, 30130, [12138, 30382],
   5364     30865, 31192, 32203, 32631, 32933, 34987, 35513, 36027, 36991,
   5365     [12206, 38750], [12214, 39131], 27147, 31800, 20633, 23614, 24494, 26503,
   5366     27608, 29749, 30473, 32654, [12240, 40763], 26570, 31255, 21305,
   5367     [12134, 30091], 39661, 24422, 33181, 33777, 32920, 24380, 24517, 30050,
   5368     31558, 36924, 26727, 23019, 23195, 32016, 30334, 35628, 20469, 24426,
   5369     27161, 27703, 28418, 29922, 31080, 34920, 35413, 35961, 24287, 25551,
   5370     30149, 31186, 33495, 37672, 37618, 33948, 34541, 39981, 21697, 24428,
   5371     25996, 27996, 28693, 36007, 36051, 38971, 25935, 29942, 19981, 20184,
   5372     22496, 22827, 23142, 23500, 20904, 24067, 24220, 24598, 25206, 25975,
   5373     26023, 26222, 28014, [12119, 29238], 31526, 33104, 33178, 33433, 35676,
   5374     36000, 36070, 36212, [12201, 38428], 38468, 20398, 25771, 27494, 33310,
   5375     33889, 34154, 37096, 23553, 26963, [12213, 39080], 33914, 34135, 20239,
   5376     21103, 24489, 24133, 26381, 31119, 33145, 35079, 35206, 28149, 24343,
   5377     25173, 27832, 20175, 29289, 39826, 20998, 21563, 22132, 22707, 24996,
   5378     25198, 28954, 22894, 31881, 31966, 32027, 38640, [12098, 25991], 32862,
   5379     19993, 20341, 20853, 22592, 24163, 24179, 24330, 26564, 20006, 34109,
   5380     38281, 38491, [12150, 31859], [12212, 38913], 20731, 22721, 30294, 30887,
   5381     21029, 30629, 34065, 31622, 20559, 22793, [12122, 29255], 31687, 32232,
   5382     36794, 36820, 36941, 20415, 21193, 23081, 24321, 38829, 20445, 33303,
   5383     37610, 22275, 25429, 27497, 29995, 35036, 36628, 31298, 21215, 22675,
   5384     24917, 25098, 26286, [11935, 27597], 31807, 33769, 20515, 20472, 21253,
   5385     21574, 22577, 22857, 23453, 23792, 23791, 23849, 24214, 25265, 25447,
   5386     25918, [12101, 26041], 26379, 27861, 27873, 28921, 30770, 32299, 32990,
   5387     33459, 33804, 34028, 34562, 35090, 35370, 35914, 37030, 37586, 39165,
   5388     40179, 40300, 20047, 20129, 20621, 21078, 22346, 22952, 24125,
   5389     {f: 2, c: 24536}, 25151, 26292, 26395, 26576, 26834, 20882, 32033, 32938,
   5390     33192, 35584, 35980, 36031, 37502, 38450, 21536, 38956, 21271, 20693,
   5391     [12056, 21340], 22696, 25778, 26420, 29287, 30566, 31302, 37350, 21187,
   5392     27809, 27526, 22528, 24140, 22868, 26412, 32763, 20961, 30406, 25705,
   5393     30952, 39764, [12231, 40635], 22475, 22969, 26151, 26522, 27598, 21737,
   5394     27097, 24149, 33180, 26517, 39850, 26622, 40018, 26717, 20134, 20451,
   5395     [12060, 21448], 25273, 26411, 27819, 36804, 20397, 32365, 40639, 19975,
   5396     24930, 28288, 28459, 34067, 21619, 26410, 39749, [11922, 24051], 31637,
   5397     23724, 23494, 34588, 28234, 34001, 31252, 33032, 22937, 31885,
   5398     [11936, 27665], 30496, 21209, 22818, 28961, 29279, [12141, 30683], 38695,
   5399     40289, 26891, 23167, 23064, 20901, 21517, 21629, 26126, 30431, 36855,
   5400     37528, 40180, 23018, 29277, 28357, 20813, 26825, 32191, 32236,
   5401     [12207, 38754], 40634, 25720, 27169, 33538, 22916, 23391, [12113, 27611],
   5402     29467, 30450, 32178, 32791, 33945, 20786, [12106, 26408], 40665,
   5403     [12140, 30446], 26466, 21247, 39173, 23588, 25147, 31870, 36016, 21839,
   5404     24758, 32011, [12200, 38272], 21249, 20063, 20918, 22812, 29242, 32822,
   5405     37326, 24357, [12142, 30690], 21380, 24441, 32004, 34220, 35379, 36493,
   5406     38742, 26611, 34222, 37971, 24841, 24840, 27833, 30290, 35565, 36664,
   5407     21807, 20305, 20778, 21191, 21451, 23461, 24189, 24736, 24962, 25558,
   5408     26377, 26586, 28263, 28044, {f: 2, c: 29494}, 30001, 31056, 35029, 35480,
   5409     36938, [12194, 37009], 37109, 38596, 34701, [12067, 22805], 20104, 20313,
   5410     19982, 35465, 36671, 38928, 20653, 24188, 22934, 23481, 24248, 25562,
   5411     25594, 25793, 26332, 26954, 27096, 27915, 28342, 29076, [12132, 29992],
   5412     31407, [12154, 32650], 32768, 33865, 33993, 35201, 35617, 36362, 36965,
   5413     38525, 39178, 24958, 25233, 27442, 27779, 28020, 32716, 32764, 28096,
   5414     32645, 34746, 35064, 26469, 33713, 38972, 38647, 27931, 32097, 33853,
   5415     37226, 20081, 21365, 23888, 27396, 28651, 34253, 34349, 35239, 21033,
   5416     21519, 23653, 26446, 26792, 29702, 29827, 30178, 35023, 35041,
   5417     [12197, 37324], 38626, 38520, 24459, 29575, [12148, 31435], 33870, 25504,
   5418     30053, 21129, 27969, 28316, 29705, 30041, 30827, 31890, 38534,
   5419     [12015, 31452], [12243, 40845], 20406, 24942, 26053, 34396, 20102, 20142,
   5420     20698, 20001, 20940, 23534, 26009, 26753, 28092, 29471, 30274, 30637,
   5421     31260, 31975, 33391, 35538, 36988, 37327, 38517, 38936, [12050, 21147],
   5422     32209, 20523, 21400, 26519, 28107, 29136, 29747, 33256, 36650, 38563,
   5423     40023, 40607, 29792, 22593, 28057, 32047, 39006, 20196, 20278, 20363,
   5424     20919, 21169, 23994, 24604, 29618, 31036, 33491, 37428, 38583, 38646,
   5425     38666, 40599, 40802, 26278, 27508, 21015, 21155, 28872, 35010, 24265,
   5426     24651, 24976, 28451, 29001, 31806, 32244, 32879, 34030, 36899, 37676,
   5427     21570, 39791, 27347, 28809, 36034, 36335, 38706, 21172, 23105, 24266,
   5428     24324, 26391, 27004, 27028, 28010, 28431, 29282, 29436, 31725,
   5429     [12156, 32769], 32894, 34635, 37070, 20845, 40595, 31108, 32907, 37682,
   5430     35542, 20525, 21644, 35441, 27498, 36036, 33031, 24785, 26528, 40434,
   5431     20121, 20120, 39952, 35435, 34241, 34152, 26880, 28286, 30871, 33109,
   5432     24332, 19984, 19989, 20010, 20017, [12034, 20022], 20028, [12035, 20031],
   5433     20034, 20054, 20056, 20098, [12037, 20101], 35947, 20106, 33298, 24333,
   5434     20110, {f: 2, c: 20126}, [12039, 20128], 20130, 20144, 20147, 20150, 20174,
   5435     20173, 20164, 20166, 20162, 20183, 20190, 20205, 20191, 20215, 20233,
   5436     20314, 20272, 20315, 20317, 20311, 20295, 20342, 20360, 20367, 20376,
   5437     20347, 20329, 20336, 20369, 20335, 20358, 20374, 20760, 20436, 20447,
   5438     20430, 20440, 20443, 20433, 20442, 20432, {f: 2, c: 20452}, 20506, 20520,
   5439     20500, 20522, 20517, 20485, 20252, 20470, 20513, 20521, 20524, 20478,
   5440     20463, 20497, 20486, 20547, 20551, 26371, 20565, 20560, 20552, 20570,
   5441     20566, 20588, 20600, 20608, 20634, 20613, 20660, 20658, {f: 2, c: 20681},
   5442     20659, 20674, 20694, 20702, 20709, 20717, 20707, 20718, 20729, 20725,
   5443     20745, {f: 2, c: 20737}, 20758, 20757, 20756, 20762, 20769, 20794, 20791,
   5444     20796, 20795, [12041, 20799], [11918, 20800], 20818, 20812, 20820, 20834,
   5445     31480, {f: 2, c: 20841}, 20846, 20864, [12044, 20866], 22232, 20876, 20873,
   5446     20879, 20881, 20883, 20885, [12045, 20886], 20900, 20902, 20898,
   5447     {f: 2, c: 20905}, [12046, 20907], 20915, {f: 2, c: 20913}, 20912, 20917,
   5448     20925, 20933, 20937, 20955, [12047, 20960], 34389, 20969, 20973, 20976,
   5449     [12048, 20981], 20990, 20996, 21003, 21012, 21006, 21031, 21034, 21038,
   5450     21043, 21049, 21071, 21060, {f: 2, c: 21067}, 21086, 21076, 21098, 21108,
   5451     21097, 21107, 21119, 21117, 21133, 21140, 21138, 21105, 21128, 21137,
   5452     36776, 36775, {f: 2, c: 21164}, 21180, 21173, 21185, 21197, 21207, 21214,
   5453     21219, 21222, 39149, 21216, 21235, 21237, 21240, [12051, 21241], 21254,
   5454     21256, 30008, 21261, 21264, 21263, [12052, 21269], [12053, 21274], 21283,
   5455     21295, 21297, 21299, [12054, 21304], 21312, 21318, 21317, 19991, 21321,
   5456     21325, 20950, 21342, [12057, 21353], 21358, 22808, 21371, 21367,
   5457     [12058, 21378], 21398, 21408, 21414, 21413, 21422, 21424, [12059, 21430],
   5458     21443, 31762, 38617, 21471, 26364, 29166, 21486, 21480, 21485, 21498,
   5459     21505, 21565, 21568, {f: 2, c: 21548}, 21564, 21550, 21558, 21545, 21533,
   5460     21582, 21647, 21621, 21646, 21599, 21617, 21623, 21616, 21650, 21627,
   5461     21632, 21622, 21636, 21648, 21638, 21703, 21666, 21688, 21669, 21676,
   5462     21700, 21704, 21672, 21675, 21698, 21668, 21694, 21692, 21720,
   5463     {f: 2, c: 21733}, 21775, 21780, 21757, 21742, 21741, 21754, 21730, 21817,
   5464     21824, 21859, 21836, 21806, 21852, 21829, {f: 2, c: 21846}, 21816, 21811,
   5465     21853, 21913, 21888, 21679, 21898, 21919, 21883, 21886, 21912, 21918,
   5466     21934, 21884, 21891, 21929, 21895, 21928, 21978, 21957, 21983, 21956,
   5467     21980, 21988, 21972, 22036, 22007, 22038, 22014, 22013, 22043, 22009,
   5468     22094, 22096, 29151, 22068, 22070, 22066, 22072, 22123, 22116, 22063,
   5469     22124, 22122, 22150, 22144, 22154, 22176, 22164, 22159, 22181, 22190,
   5470     22198, 22196, 22210, 22204, 22209, 22211, 22208, 22216, 22222, 22225,
   5471     22227, [12062, 22231], 22254, 22265, 22272, 22271, 22276, 22281, 22280,
   5472     22283, 22285, 22291, 22296, 22294, 21959, 22300, 22310, {f: 2, c: 22327},
   5473     22350, 22331, 22336, 22351, 22377, 22464, 22408, 22369, 22399, 22409,
   5474     22419, 22432, 22451, 22436, 22442, 22448, 22467, 22470, 22484,
   5475     {f: 2, c: 22482}, 22538, 22486, 22499, 22539, 22553, 22557, 22642, 22561,
   5476     22626, 22603, 22640, 27584, 22610, 22589, 22649, 22661, 22713, 22687,
   5477     22699, 22714, 22750, 22715, 22712, 22702, 22725, 22739, 22737, 22743,
   5478     22745, 22744, 22757, 22748, 22756, 22751, 22767, 22778, 22777,
   5479     {f: 3, c: 22779}, [12065, 22786], [12066, 22794], 22800, 22811, 26790,
   5480     22821, {f: 2, c: 22828}, 22834, 22840, 22846, 31442, 22869, 22864, 22862,
   5481     22874, 22872, 22882, 22880, 22887, 22892, 22889, 22904, 22913, 22941,
   5482     20318, 20395, 22947, 22962, 22982, 23016, 23004, 22925, {f: 2, c: 23001},
   5483     23077, 23071, 23057, 23068, 23049, 23066, 23104, 23148, 23113,
   5484     {f: 2, c: 23093}, 23138, 23146, 23194, 23228, 23230, 23243, 23234, 23229,
   5485     23267, 23255, 23270, 23273, 23254, {f: 2, c: 23290}, 23308, 23307, 23318,
   5486     23346, 23248, 23338, 23350, 23358, 23363, 23365, 23360, 23377, 23381,
   5487     {f: 2, c: 23386}, 23397, 23401, 23408, 23411, 23413, 23416, 25992, 23418,
   5488     [12071, 23424], 23427, 23462, 23480, 23491, 23495, 23497, 23508, 23504,
   5489     23524, 23526, 23522, 23518, 23525, 23531, 23536, 23542, 23539, 23557,
   5490     {f: 2, c: 23559}, 23565, 23571, 23584, [11920, 12074, 23586], 23592,
   5491     [12075, 23608], 23609, 23617, 23622, 23630, 23635, 23632, 23631, 23409,
   5492     23660, [12076, 23662], 20066, 23670, 23673, 23692, 23697, 23700, 22939,
   5493     23723, 23739, 23734, 23740, 23735, 23749, 23742, 23751, 23769, 23785,
   5494     23805, 23802, 23789, 23948, 23786, 23819, 23829, 23831, 23900, 23839,
   5495     23835, 23825, 23828, 23842, 23834, 23833, 23832, 23884, 23890, 23886,
   5496     23883, 23916, 23923, 23926, 23943, 23940, 23938, 23970, 23965, 23980,
   5497     23982, 23997, 23952, 23991, 23996, 24009, 24013, 24019, 24018, 24022,
   5498     [12078, 24027], 24043, 24050, 24053, 24075, 24090, 24089, 24081, 24091,
   5499     {f: 2, c: 24118}, 24132, 24131, 24128, 24142, 24151, 24148, 24159, 24162,
   5500     24164, 24135, {f: 2, c: 24181}, [11923, 12083, 24186], 40636,
   5501     [12084, 24191], 24224, {f: 2, c: 24257}, 24264, 24272, 24271, 24278, 24291,
   5502     24285, {f: 2, c: 24282}, 24290, 24289, {f: 2, c: 24296}, 24300, 24305,
   5503     24307, 24304, [12085, 24308], 24312, [12086, 24318], 24323, 24329, 24413,
   5504     24412, [12087, 24331], 24337, 24342, 24361, 24365, 24376, 24385, 24392,
   5505     24396, 24398, 24367, [11924, 24401], {f: 2, c: 24406}, 24409,
   5506     [12090, 24417], 24429, [12091, 24435], 24439, 24451, 24450, 24447, 24458,
   5507     24456, 24465, 24455, 24478, 24473, 24472, 24480, 24488, 24493, 24508,
   5508     24534, 24571, 24548, 24568, 24561, 24541, 24755, 24575, 24609, 24672,
   5509     24601, 24592, 24617, 24590, 24625, 24603, 24597, 24619, 24614, 24591,
   5510     24634, 24666, 24641, 24682, 24695, 24671, 24650, 24646, 24653, 24675,
   5511     24643, 24676, 24642, 24684, 24683, 24665, 24705, 24717, 24807, 24707,
   5512     24730, 24708, 24731, {f: 2, c: 24726}, 24722, 24743, 24715, 24801, 24760,
   5513     24800, 24787, 24756, 24560, 24765, 24774, 24757, 24792, 24909, 24853,
   5514     24838, {f: 2, c: 24822}, 24832, 24820, 24826, 24835, 24865, 24827, 24817,
   5515     {f: 2, c: 24845}, 24903, 24894, 24872, 24871, 24906, 24895, 24892, 24876,
   5516     24884, 24893, 24898, 24900, 24947, 24951, {f: 3, c: 24920}, 24939, 24948,
   5517     24943, 24933, 24945, 24927, 24925, 24915, 24949, 24985, 24982, 24967,
   5518     25004, 24980, 24986, 24970, 24977, 25003, 25006, 25036, 25034, 25033,
   5519     25079, 25032, 25027, 25030, 25018, 25035, 32633, 25037, 25062, 25059,
   5520     25078, 25082, 25076, 25087, 25085, 25084, 25086, 25088, [12093, 25096],
   5521     25097, 25101, 25100, 25108, 25115, 25118, 25121, 25130, 25134, 25136,
   5522     {f: 2, c: 25138}, 25153, 25166, 25182, 25187, 25179, 25184, 25192, 25212,
   5523     25218, 25225, 25214, {f: 2, c: 25234}, 25238, 25300, 25219, 25236, 25303,
   5524     25297, 25275, 25295, 25343, 25286, 25812, 25288, 25308, 25292, 25290,
   5525     25282, 25287, 25243, 25289, 25356, 25326, 25329, 25383, 25346, 25352,
   5526     25327, 25333, 25424, 25406, 25421, 25628, 25423, 25494, 25486, 25472,
   5527     25515, 25462, 25507, 25487, 25481, 25503, 25525, 25451, 25449, 25534,
   5528     25577, 25536, 25542, 25571, 25545, 25554, 25590, 25540, 25622, 25652,
   5529     25606, 25619, 25638, 25654, 25885, 25623, 25640, 25615, 25703, 25711,
   5530     25718, 25678, 25898, 25749, 25747, 25765, 25769, 25736, 25788, 25818,
   5531     25810, 25797, 25799, 25787, 25816, 25794, 25841, 25831, 33289,
   5532     {f: 2, c: 25824}, 25260, 25827, 25839, 25900, 25846, 25844, 25842, 25850,
   5533     25856, 25853, 25880, 25884, 25861, 25892, 25891, 25899, [12097, 25908],
   5534     [11929, 25909], 25911, 25910, 25912, 30027, 25928, 25942, 25941, 25933,
   5535     25944, 25950, 25949, 25970, 25976, {f: 2, c: 25986}, 35722, 26011, 26015,
   5536     26027, 26039, 26051, 26054, 26049, 26052, 26060, 26066, 26075, 26073,
   5537     [12102, 26080], [11931, 26081], 26097, 26482, 26122, 26115, 26107, 26483,
   5538     {f: 2, c: 26165}, 26164, 26140, 26191, 26180, 26185, 26177, 26206, 26205,
   5539     26212, {f: 2, c: 26215}, 26207, 26210, 26224, 26243, 26248, 26254, 26249,
   5540     26244, 26264, 26269, 26305, 26297, 26313, 26302, 26300, 26308, 26296,
   5541     26326, 26330, 26336, 26175, 26342, 26345, [12104, 26352], 26357, 26359,
   5542     26383, 26390, 26398, {f: 2, c: 26406}, 38712, 26414, 26431, 26422, 26433,
   5543     26424, 26423, 26438, 26462, 26464, 26457, {f: 2, c: 26467}, 26505, 26480,
   5544     26537, 26492, 26474, 26508, 26507, 26534, 26529, 26501, 26551, 26607,
   5545     26548, 26604, 26547, 26601, 26552, 26596, 26590, 26589, 26594, 26606,
   5546     26553, 26574, 26566, 26599, 27292, 26654, 26694, 26665, 26688, 26701,
   5547     26674, 26702, 26803, 26667, 26713, 26723, 26743, 26751, 26783, 26767,
   5548     26797, 26772, 26781, 26779, 26755, 27310, 26809, 26740, 26805, 26784,
   5549     26810, 26895, 26765, 26750, 26881, 26826, 26888, 26840, 26914, 26918,
   5550     26849, 26892, 26829, 26836, 26855, 26837, 26934, 26898, 26884, 26839,
   5551     26851, 26917, 26873, 26848, 26863, 26920, 26922, 26906, 26915, 26913,
   5552     26822, 27001, 26999, 26972, 27000, 26987, 26964, 27006, 26990, 26937,
   5553     26996, 26941, 26969, 26928, 26977, 26974, 26973, 27009, 26986, 27058,
   5554     27054, 27088, 27071, 27073, 27091, 27070, 27086, 23528, 27082, 27101,
   5555     27067, 27075, 27047, 27182, 27025, 27040, 27036, 27029, 27060, 27102,
   5556     27112, 27138, 27163, 27135, 27402, 27129, 27122, 27111, 27141, 27057,
   5557     27166, 27117, 27156, 27115, 27146, 27154, 27329, 27171, 27155, 27204,
   5558     27148, 27250, 27190, 27256, 27207, 27234, 27225, 27238, 27208, 27192,
   5559     27170, 27280, 27277, 27296, 27268, {f: 2, c: 27298}, 27287, 34327, 27323,
   5560     27331, 27330, 27320, 27315, 27308, 27358, 27345, 27359, 27306, 27354,
   5561     27370, 27387, 27397, 34326, 27386, 27410, 27414, 39729, 27423, 27448,
   5562     27447, 30428, 27449, 39150, 27463, 27459, 27465, 27472, 27481, 27476,
   5563     27483, 27487, 27489, 27512, [12109, 27513], {f: 2, c: 27519}, 27524, 27523,
   5564     27533, 27544, 27541, 27550, 27556, {f: 2, c: 27562}, 27567, 27570, 27569,
   5565     [12110, 27571], 27575, 27580, 27590, [12111, 27595], 27603, 27615, 27628,
   5566     27627, 27635, 27631, 40638, 27656, 27667, [12115, 27668], 27675, 27684,
   5567     27683, 27742, 27733, 27746, 27754, 27778, 27789, 27802, 27777, 27803,
   5568     27774, 27752, 27763, 27794, 27792, 27844, 27889, 27859, 27837, 27863,
   5569     27845, 27869, 27822, 27825, 27838, 27834, 27867, 27887, 27865, 27882,
   5570     27935, 34893, 27958, 27947, 27965, 27960, 27929, 27957, 27955, 27922,
   5571     27916, 28003, 28051, 28004, 27994, 28025, 27993, 28046, 28053, 28644,
   5572     28037, 28153, 28181, 28170, 28085, 28103, 28134, 28088, 28102, 28140,
   5573     28126, 28108, 28136, 28114, 28101, 28154, 28121, 28132, 28117, 28138,
   5574     28142, 28205, 28270, 28206, 28185, 28274, 28255, 28222, 28195, 28267,
   5575     28203, 28278, 28237, 28191, 28227, 28218, 28238, 28196, 28415, 28189,
   5576     28216, 28290, 28330, 28312, 28361, 28343, 28371, 28349, 28335, 28356,
   5577     28338, {f: 2, c: 28372}, 28303, 28325, 28354, 28319, 28481, 28433, 28748,
   5578     28396, 28408, 28414, 28479, 28402, 28465, 28399, 28466, 28364, 28478,
   5579     28435, 28407, 28550, 28538, 28536, 28545, 28544, 28527, 28507, 28659,
   5580     28525, 28546, 28540, 28504, 28558, 28561, 28610, 28518, 28595, 28579,
   5581     28577, 28580, 28601, 28614, 28586, 28639, 28629, 28652, 28628, 28632,
   5582     28657, 28654, 28635, 28681, 28683, 28666, 28689, 28673, 28687, 28670,
   5583     28699, 28698, 28532, 28701, 28696, 28703, 28720, 28734, 28722, 28753,
   5584     28771, 28825, 28818, 28847, 28913, 28844, 28856, 28851, 28846, 28895,
   5585     28875, 28893, 28889, 28937, 28925, 28956, 28953, 29029, 29013, 29064,
   5586     29030, 29026, 29004, 29014, 29036, 29071, 29179, 29060, 29077, 29096,
   5587     29100, 29143, 29113, 29118, 29138, 29129, 29140, 29134, 29152, 29164,
   5588     29159, 29173, 29180, 29177, 29183, 29197, 29200, 29211, 29224, 29229,
   5589     29228, 29232, 29234, [12120, 29243], 29244, [12121, 29247], 29248, 29254,
   5590     29259, 29272, 29300, 29310, 29314, 29313, 29319, 29330, 29334, 29346,
   5591     29351, 29369, 29362, 29379, 29382, 29380, 29390, 29394, 29410,
   5592     {f: 2, c: 29408}, 29433, 29431, 20495, 29463, 29450, 29468, 29462, 29469,
   5593     29492, 29487, 29481, 29477, 29502, {f: 2, c: 29518}, 40664, 29527, 29546,
   5594     29544, 29552, 29560, 29557, 29563, 29562, 29640, 29619, 29646, 29627,
   5595     29632, 29669, 29678, 29662, 29858, 29701, 29807, 29733, 29688, 29746,
   5596     29754, 29781, 29759, 29791, 29785, 29761, 29788, 29801, 29808, 29795,
   5597     29802, 29814, 29822, 29835, 29854, 29863, 29898, 29903, 29908, 29681,
   5598     29920, 29923, 29927, 29929, 29934, 29938, {f: 2, c: 29936}, 29944, 29943,
   5599     29956, 29955, 29957, 29964, 29966, 29965, 29973, 29971, 29982, 29990,
   5600     29996, 30012, 30020, 30029, 30026, 30025, 30043, 30022, 30042, 30057,
   5601     30052, 30055, 30059, 30061, 30072, 30070, {f: 2, c: 30086}, 30068, 30090,
   5602     30089, 30082, 30100, 30106, 30109, 30117, 30115, 30146, 30131, 30147,
   5603     30133, 30141, 30136, 30140, 30129, 30157, 30154, 30162, 30169, 30179,
   5604     30174, {f: 2, c: 30206}, 30204, 30209, 30192, 30202, {f: 2, c: 30194},
   5605     30219, 30221, 30217, 30239, 30247, {f: 3, c: 30240}, 30244, 30260, 30256,
   5606     30267, {f: 2, c: 30279}, 30278, 30300, 30296, {f: 2, c: 30305},
   5607     {f: 3, c: 30312}, 30311, 30316, 30320, 30322, [12136, 30326], 30328, 30332,
   5608     30336, 30339, 30344, 30347, 30350, 30358, 30355, {f: 2, c: 30361}, 30384,
   5609     30388, {f: 3, c: 30392}, 30402, 30413, 30422, 30418, 30430, 30433, 30437,
   5610     30439, 30442, 34351, 30459, 30472, 30471, 30468, 30505, 30500, 30494,
   5611     {f: 2, c: 30501}, 30491, {f: 2, c: 30519}, 30535, 30554, 30568, 30571,
   5612     30555, 30565, 30591, 30590, 30585, 30606, 30603, 30609, 30624, 30622,
   5613     30640, 30646, 30649, 30655, {f: 2, c: 30652}, 30651, 30663, 30669, 30679,
   5614     30682, 30684, 30691, 30702, 30716, 30732, 30738, 31014, 30752, 31018,
   5615     30789, 30862, 30836, 30854, 30844, 30874, 30860, 30883, 30901, 30890,
   5616     30895, 30929, 30918, 30923, 30932, 30910, 30908, 30917, 30922, 30956,
   5617     30951, 30938, 30973, 30964, 30983, 30994, 30993, 31001, 31020, 31019,
   5618     31040, 31072, 31063, 31071, 31066, 31061, 31059, 31098, 31103, 31114,
   5619     31133, 31143, 40779, 31146, 31150, 31155, {f: 2, c: 31161}, 31177, 31189,
   5620     31207, 31212, 31201, 31203, 31240, 31245, {f: 2, c: 31256}, 31264, 31263,
   5621     31104, 31281, 31291, 31294, 31287, 31299, 31319, 31305, {f: 2, c: 31329},
   5622     31337, 40861, 31344, 31353, 31357, 31368, 31383, 31381, 31384, 31382,
   5623     31401, 31432, 31408, 31414, 31429, 31428, 31423, 36995, 31431, 31434,
   5624     31437, 31439, 31445, 31443, {f: 2, c: 31449}, 31453, {f: 2, c: 31457},
   5625     31462, 31469, 31472, 31490, 31503, 31498, 31494, 31539, {f: 2, c: 31512},
   5626     31518, 31541, 31528, 31542, 31568, 31610, 31492, 31565, 31499, 31564,
   5627     31557, 31605, 31589, 31604, 31591, {f: 2, c: 31600}, 31596, 31598, 31645,
   5628     31640, 31647, 31629, 31644, 31642, 31627, 31634, 31631, 31581, 31641,
   5629     31691, 31681, 31692, 31695, 31668, 31686, 31709, 31721, 31761, 31764,
   5630     31718, 31717, 31840, 31744, 31751, 31763, 31731, 31735, 31767, 31757,
   5631     31734, 31779, 31783, 31786, 31775, 31799, 31787, 31805, 31820, 31811,
   5632     31828, 31823, 31808, 31824, 31832, 31839, 31844, 31830, 31845, 31852,
   5633     31861, 31875, 31888, 31908, 31917, 31906, 31915, 31905, 31912, 31923,
   5634     31922, 31921, 31918, 31929, 31933, 31936, 31941, 31938, 31960, 31954,
   5635     31964, 31970, 39739, 31983, 31986, 31988, 31990, 31994, 32006, 32002,
   5636     32028, 32021, 32010, 32069, 32075, 32046, 32050, 32063, 32053, 32070,
   5637     32115, 32086, 32078, 32114, 32104, 32110, 32079, 32099, 32147, 32137,
   5638     32091, 32143, 32125, 32155, 32186, 32174, 32163, 32181, 32199, 32189,
   5639     32171, 32317, 32162, 32175, 32220, 32184, 32159, 32176, 32216, 32221,
   5640     32228, 32222, 32251, 32242, 32225, 32261, 32266, 32291, 32289, 32274,
   5641     32305, 32287, 32265, 32267, 32290, 32326, 32358, 32315, 32309, 32313,
   5642     32323, 32311, 32306, 32314, 32359, 32349, 32342, 32350, {f: 2, c: 32345},
   5643     32377, 32362, 32361, 32380, 32379, 32387, 32213, 32381, 36782, 32383,
   5644     {f: 2, c: 32392}, 32396, 32402, 32400, {f: 2, c: 32403}, 32406, 32398,
   5645     {f: 2, c: 32411}, 32568, 32570, 32581, {f: 3, c: 32588}, 32592,
   5646     [12153, 32593], 32597, 32596, 32600, {f: 2, c: 32607}, {f: 2, c: 32616},
   5647     32615, 32632, 32642, 32646, 32643, 32648, 32647, 32652, 32660, 32670,
   5648     32669, 32666, 32675, 32687, 32690, 32697, 32686, 32694, 32696, 35697,
   5649     {f: 2, c: 32709}, 32714, 32725, 32724, 32737, 32742, 32745, 32755, 32761,
   5650     39132, 32774, 32772, 32779, [12158, 32786], {f: 2, c: 32792}, 32796, 32801,
   5651     32808, 32831, 32827, 32842, 32838, 32850, 32856, 32858, 32863, 32866,
   5652     32872, 32883, 32882, 32880, 32886, 32889, 32893, [12160, 32895], 32900,
   5653     32902, 32901, 32923, 32915, 32922, 32941, 20880, 32940, 32987, 32997,
   5654     32985, 32989, 32964, 32986, 32982, 33033, 33007, 33009, 33051, 33065,
   5655     33059, 33071, 33099, 38539, 33094, 33086, 33107, 33105, 33020, 33137,
   5656     33134, {f: 2, c: 33125}, 33140, 33155, 33160, 33162, 33152, 33154, 33184,
   5657     33173, 33188, 33187, 33119, 33171, 33193, 33200, 33205, 33214, 33208,
   5658     33213, 33216, 33218, 33210, 33225, 33229, 33233, 33241, 33240, 33224,
   5659     33242, {f: 2, c: 33247}, 33255, {f: 2, c: 33274}, 33278, {f: 2, c: 33281},
   5660     33285, 33287, 33290, 33293, 33296, 33302, 33321, 33323, 33336, 33331,
   5661     33344, 33369, 33368, 33373, 33370, 33375, 33380, 33378, 33384,
   5662     {f: 2, c: 33386}, 33326, 33393, 33399, [12171, 33400], 33406, 33421, 33426,
   5663     33451, 33439, 33467, 33452, 33505, 33507, 33503, 33490, 33524, 33523,
   5664     33530, 33683, 33539, 33531, 33529, 33502, 33542, 33500, 33545, 33497,
   5665     33589, 33588, 33558, 33586, 33585, 33600, 33593, 33616, 33605, 33583,
   5666     33579, {f: 2, c: 33559}, 33669, 33690, 33706, 33695, 33698, 33686, 33571,
   5667     33678, 33671, 33674, 33660, 33717, 33651, 33653, 33696, 33673, 33704,
   5668     33780, 33811, 33771, 33742, 33789, 33795, 33752, 33803, 33729, 33783,
   5669     33799, 33760, 33778, 33805, 33826, 33824, 33725, 33848, 34054, 33787,
   5670     33901, 33834, 33852, 34138, 33924, 33911, 33899, 33965, 33902, 33922,
   5671     33897, 33862, 33836, 33903, 33913, 33845, 33994, 33890, 33977, 33983,
   5672     33951, 34009, 33997, 33979, 34010, 34000, 33985, 33990, 34006, 33953,
   5673     34081, 34047, 34036, {f: 2, c: 34071}, 34092, 34079, 34069, 34068, 34044,
   5674     34112, 34147, 34136, 34120, 34113, 34306, 34123, 34133, 34176, 34212,
   5675     34184, 34193, 34186, 34216, 34157, 34196, 34203, 34282, 34183, 34204,
   5676     34167, 34174, 34192, 34249, 34234, 34255, 34233, 34256, 34261, 34269,
   5677     34277, 34268, 34297, 34314, 34323, 34315, 34302, 34298, 34310, 34338,
   5678     34330, 34352, 34367, [12172, 34381], 20053, 34388, 34399, 34407, 34417,
   5679     34451, 34467, {f: 2, c: 34473}, {f: 2, c: 34443}, 34486, 34479, 34500,
   5680     34502, 34480, 34505, 34851, 34475, 34516, 34526, 34537, 34540, 34527,
   5681     34523, 34543, 34578, 34566, 34568, 34560, 34563, 34555, 34577, 34569,
   5682     34573, 34553, 34570, 34612, 34623, 34615, 34619, 34597, 34601, 34586,
   5683     34656, 34655, 34680, 34636, 34638, 34676, 34647, 34664, 34670, 34649,
   5684     34643, 34659, 34666, 34821, 34722, 34719, 34690, 34735, 34763, 34749,
   5685     34752, 34768, 38614, 34731, 34756, 34739, 34759, 34758, 34747, 34799,
   5686     34802, 34784, 34831, 34829, 34814, {f: 2, c: 34806}, 34830, 34770, 34833,
   5687     34838, 34837, 34850, 34849, 34865, 34870, 34873, 34855, 34875, 34884,
   5688     34882, 34898, 34905, 34910, 34914, 34923, 34945, 34942, 34974, 34933,
   5689     34941, 34997, 34930, 34946, 34967, 34962, 34990, 34969, 34978, 34957,
   5690     34980, 34992, 35007, 34993, {f: 2, c: 35011}, 35028, {f: 2, c: 35032},
   5691     35037, 35065, 35074, 35068, 35060, 35048, 35058, 35076, 35084, 35082,
   5692     35091, 35139, 35102, 35109, {f: 2, c: 35114}, 35137, 35140, 35131, 35126,
   5693     35128, 35148, 35101, 35168, 35166, 35174, 35172, 35181, 35178, 35183,
   5694     35188, 35191, [12177, 35198], 35203, 35208, 35210, 35219, 35224, 35233,
   5695     35241, 35238, 35244, 35247, 35250, 35258, 35261, {f: 2, c: 35263}, 35290,
   5696     {f: 2, c: 35292}, 35303, 35316, 35320, 35331, 35350, 35344, 35340, 35355,
   5697     35357, 35365, 35382, 35393, 35419, 35410, 35398, 35400, 35452, 35437,
   5698     35436, 35426, 35461, 35458, 35460, 35496, 35489, 35473, {f: 2, c: 35493},
   5699     35482, 35491, 35524, 35533, 35522, 35546, 35563, 35571, 35559, 35556,
   5700     35569, 35604, 35552, 35554, 35575, 35550, 35547, 35596, 35591, 35610,
   5701     35553, 35606, 35600, 35607, 35616, 35635, 38827, 35622, 35627, 35646,
   5702     35624, 35649, 35660, 35663, 35662, 35657, 35670, 35675, 35674, 35691,
   5703     35679, 35692, 35695, 35700, 35709, 35712, 35724, 35726, {f: 2, c: 35730},
   5704     35734, {f: 2, c: 35737}, 35898, 35905, 35903, 35912, 35916, 35918, 35920,
   5705     [12183, 35925], 35938, 35948, [12184, 35960], 35962, 35970, 35977, 35973,
   5706     35978, {f: 2, c: 35981}, 35988, 35964, 35992, 25117, 36013, 36010, 36029,
   5707     {f: 2, c: 36018}, 36014, 36022, 36040, 36033, 36068, 36067, 36058, 36093,
   5708     {f: 2, c: 36090}, {f: 2, c: 36100}, 36106, 36103, 36111, 36109, 36112,
   5709     40782, 36115, 36045, 36116, 36118, 36199, 36205, 36209, 36211, 36225,
   5710     36249, 36290, 36286, 36282, 36303, 36314, 36310, 36300, 36315, 36299,
   5711     {f: 2, c: 36330}, 36319, 36323, 36348, {f: 2, c: 36360}, 36351,
   5712     {f: 2, c: 36381}, 36368, 36383, 36418, 36405, 36400, 36404, 36426, 36423,
   5713     36425, 36428, 36432, 36424, 36441, 36452, 36448, 36394, 36451, 36437,
   5714     36470, 36466, 36476, 36481, 36487, 36485, 36484, 36491, 36490, 36499,
   5715     36497, 36500, 36505, 36522, 36513, 36524, 36528, 36550, 36529, 36542,
   5716     36549, 36552, 36555, 36571, 36579, 36604, 36603, 36587, 36606, 36618,
   5717     36613, 36629, 36626, 36633, 36627, 36636, 36639, 36635, 36620, 36646,
   5718     36659, 36667, 36665, 36677, 36674, 36670, 36684, 36681, 36678, 36686,
   5719     36695, 36700, {f: 3, c: 36706}, 36764, 36767, 36771, 36781, 36783, 36791,
   5720     36826, 36837, 36834, 36842, 36847, 36999, 36852, 36869, {f: 2, c: 36857},
   5721     36881, 36885, 36897, 36877, 36894, 36886, 36875, 36903, 36918, 36917,
   5722     36921, 36856, {f: 4, c: 36943}, 36878, 36937, 36926, 36950, 36952, 36958,
   5723     36968, 36975, 36982, 38568, 36978, 36994, 36989, 36993, 36992, 37002,
   5724     37001, 37007, 37032, 37039, 37041, 37045, 37090, 37092, 25160, 37083,
   5725     37122, 37138, 37145, 37170, 37168, 37194, 37206, 37208, 37219, 37221,
   5726     37225, 37235, 37234, 37259, 37257, 37250, 37282, 37291, 37295, 37290,
   5727     37301, 37300, 37306, {f: 2, c: 37312}, 37321, 37323, 37328, 37334, 37343,
   5728     37345, 37339, 37372, {f: 2, c: 37365}, 37406, 37375, 37396, 37420, 37397,
   5729     37393, 37470, 37463, 37445, 37449, 37476, 37448, 37525, 37439, 37451,
   5730     37456, 37532, 37526, 37523, 37531, 37466, 37583, 37561, 37559, 37609,
   5731     37647, 37626, 37700, 37678, 37657, 37666, 37658, 37667, 37690, 37685,
   5732     37691, 37724, 37728, 37756, 37742, 37718, 37808, {f: 2, c: 37804}, 37780,
   5733     37817, {f: 2, c: 37846}, 37864, 37861, 37848, 37827, 37853, 37840, 37832,
   5734     37860, 37914, 37908, 37907, 37891, 37895, 37904, 37942, 37931, 37941,
   5735     37921, 37946, 37953, 37970, 37956, 37979, 37984, 37986, 37982, 37994,
   5736     37417, 38000, 38005, 38007, 38013, 37978, 38012, 38014, 38017, 38015,
   5737     38274, 38279, 38282, 38292, 38294, {f: 2, c: 38296}, 38304, 38312, 38311,
   5738     38317, 38332, 38331, 38329, 38334, 38346, 28662, 38339, 38349, 38348,
   5739     38357, 38356, 38358, 38364, 38369, 38373, 38370, 38433, 38440,
   5740     {f: 2, c: 38446}, 38466, 38476, 38479, 38475, 38519, 38492, 38494, 38493,
   5741     38495, 38502, 38514, 38508, 38541, 38552, 38549, 38551, 38570, 38567,
   5742     {f: 2, c: 38577}, 38576, 38580, [12202, 38582], 38584, [12203, 38585],
   5743     38606, 38603, 38601, 38605, 35149, 38620, 38669, 38613, 38649, 38660,
   5744     38662, 38664, 38675, 38670, 38673, 38671, 38678, 38681, 38692, 38698,
   5745     38704, 38713, {f: 2, c: 38717}, 38724, 38726, 38728, 38722, 38729, 38748,
   5746     38752, 38756, 38758, 38760, 21202, 38763, 38769, 38777, 38789, 38780,
   5747     38785, 38778, 38790, 38795, {f: 2, c: 38799}, 38812, 38824, 38822, 38819,
   5748     {f: 2, c: 38835}, 38851, 38854, 38856, [12209, 38859], 38876,
   5749     [12210, 38893], 40783, 38898, 31455, 38902, 38901, 38927, 38924, 38968,
   5750     38948, 38945, 38967, 38973, 38982, 38991, 38987, 39019, {f: 3, c: 39023},
   5751     39028, 39027, 39082, 39087, 39089, 39094, 39108, 39107, 39110, 39145,
   5752     39147, 39171, 39177, 39186, 39188, 39192, 39201, {f: 2, c: 39197}, 39204,
   5753     39200, 39212, 39214, {f: 2, c: 39229}, 39234, 39241, 39237, 39248, 39243,
   5754     {f: 2, c: 39249}, 39244, 39253, {f: 2, c: 39319}, 39333, {f: 2, c: 39341},
   5755     39356, 39391, 39387, 39389, 39384, 39377, {f: 2, c: 39405},
   5756     {f: 2, c: 39409}, 39419, 39416, 39425, 39439, 39429, 39394, 39449, 39467,
   5757     39479, 39493, 39490, 39488, 39491, 39486, 39509, 39501, 39515, 39511,
   5758     39519, 39522, 39525, 39524, 39529, 39531, 39530, 39597, 39600, 39612,
   5759     39616, 39631, 39633, {f: 2, c: 39635}, 39646, [12221, 39647],
   5760     {f: 2, c: 39650}, 39654, 39663, 39659, 39662, 39668, 39665, 39671, 39675,
   5761     39686, 39704, 39706, 39711, {f: 2, c: 39714}, [12222, 39717],
   5762     {f: 4, c: 39719}, 39726, [12223, 39727], [12224, 39730], 39748, 39747,
   5763     39759, {f: 2, c: 39757}, 39761, 39768, 39796, 39827, 39811, 39825,
   5764     {f: 2, c: 39830}, {f: 2, c: 39839}, 39848, 39860, 39872, 39882, 39865,
   5765     39878, 39887, {f: 2, c: 39889}, 39907, 39906, 39908, 39892, 39905, 39994,
   5766     39922, 39921, 39920, 39957, 39956, 39945, 39955, 39948, 39942, 39944,
   5767     39954, 39946, 39940, 39982, 39963, 39973, 39972, 39969, 39984, 40007,
   5768     39986, 40006, 39998, 40026, 40032, 40039, 40054, 40056, 40167, 40172,
   5769     40176, 40201, 40200, 40171, 40195, 40198, 40234, 40230, 40367, 40227,
   5770     40223, 40260, 40213, 40210, 40257, 40255, 40254, 40262, 40264,
   5771     {f: 2, c: 40285}, 40292, 40273, 40272, 40281, 40306, 40329, 40327, 40363,
   5772     40303, 40314, 40346, 40356, 40361, 40370, 40388, 40385, 40379, 40376,
   5773     40378, 40390, 40399, 40386, 40409, 40403, 40440, 40422, 40429, 40431,
   5774     40445, {f: 2, c: 40474}, 40478, [12228, 40565], 40569, 40573, 40577, 40584,
   5775     {f: 2, c: 40587}, 40594, 40597, 40593, 40605, [12230, 40613], 40617, 40632,
   5776     40618, 40621, 38753, 40652, {f: 3, c: 40654}, 40660, 40668, 40670, 40669,
   5777     40672, 40677, 40680, 40687, 40692, {f: 2, c: 40694}, [12235, 40697],
   5778     {f: 2, c: 40699}, [12236, 40701], {f: 2, c: 40711}, 30391, 40725, 40737,
   5779     40748, 40766, [12241, 40778], [12242, 40786], 40788, 40803,
   5780     {f: 3, c: 40799}, {f: 2, c: 40806}, 40812, 40810, 40823, 40818, 40822,
   5781     40853, [12244, 40860], [12245, 40864], 22575, 27079, 36953, 29796, 0,
   5782     {f: 76, c: 9472}, {f: 20, c: 9312}, {f: 10, c: 8544}, 13129, 13076, 0,
   5783     13133, 0, 13095, 0, 13110, 13137, 0, 13069, 13094, 0, 13099, 13130, 0,
   5784     {f: 3, c: 13212}, {f: 2, c: 13198}, 13252, 13217, 12317, 12319, 8470,
   5785     13261, 0, {f: 5, c: 12964}, {f: 2, c: 12849}, 12857, 13182, 13181, 13180,
   5786     8750, 8721, {s: 3}, 8735, 8895, 0, 0, 21854, {s: 7}, 167133, 0, 0, 28976,
   5787     0, 40407, {s: 4}, 64054, 0, 0, 22169, 15694, {s: 4}, 20448, 0, 0, 36544, 0,
   5788     194797, {s: 4}, 153716, 32363, 33606, 167670, {s: 3}, 40572, 0, 0, 26171,
   5789     0, 40628, {s: 4}, 26629, {s: 5}, 23650, 0, 194780, 0, 32353, 0, 0, 64070,
   5790     {s: 5}, 34083, 37292, {s: 7}, 34796, {s: 8}, 25620, 0, 0, 39506, {s: 4},
   5791     64074, 0, 194692, {s: 4}, 31774, {s: 6}, 64016, 25681, 0, 0, 63980, 22625,
   5792     39002, 0, 194679, {s: 3}, 31153, 0, 28678, {s: 9}, 22218, {s: 3}, 21085, 0,
   5793     28497, 37297, {s: 10}, 64106, {s: 6}, 38960, 0, 40629, {s: 9}, 33802,
   5794     63939, {f: 2, c: 63890}, 63897, 0, 34847, 194575, 0, 194771, 194584,
   5795     {s: 7}, 137754, 23643, {s: 4}, 25890, 0, 0, 26618, 0, 26766, 0, 148432,
   5796     194848, {s: 21}, 34110, {s: 15}, 30562, {s: 12}, 65075, 0,
   5797     {f: 2, c: 65073}, {s: 4}, 65072, {f: 2, c: 65077}, {f: 2, c: 65081}, 0, 0,
   5798     {f: 2, c: 65079}, {f: 2, c: 65087}, {f: 2, c: 65085}, {f: 4, c: 65089},
   5799     {f: 2, c: 65083}, {s: 41}, {f: 3, c: 12436}, 0, 0, 22099, {s: 41}, 65508,
   5800     65287, 65282, 0, 9665, 9655, 8681, 8679, 8678, 8680, 9634, 9831, 9825,
   5801     9828, 9826, 13216, 13218, {f: 2, c: 13220}, 13207, 8467, 13208, 13235,
   5802     13234, 13233, 13232, {f: 3, c: 13189}, 13259, 13200, 13268, 13206, 13090,
   5803     13078, 13080, 13077, 13059, 13091, 13143, 13122, 13113, 13115, 13056,
   5804     13105, 13127, 13086, 13098, 0, 13183, 8481, 9742, 12342, 12320, {s: 3},
   5805     {f: 9, c: 9352}, {f: 20, c: 9332}, 12881, {f: 10, c: 8560},
   5806     {f: 10, c: 12882}, {f: 26, c: 9372}, 12867, 12861, 12863, 12852, 12856,
   5807     12851, 12860, 12866, 12862, 12854, 12853, 12859, 12864, 12858, 12976,
   5808     12973, 12969, 12975, 12948, 12970, 12952, 12971, 12946, 12945, 12947,
   5809     12972, 12974, 12950, {s: 8}, {f: 3, c: 9131}, 0, {f: 3, c: 9127}, 0, 13260,
   5810     13061, 0, 0, 13215, 13219, 13222, 0, 0, 12958, {f: 2, c: 13192}, 13256,
   5811     8749, 0, 12848, {f: 6, c: 12842}, 12855, 12865, 10145, {s: 3}, 9673, 9824,
   5812     9829, 9827, 9830, {f: 4, c: 9728}, 9758, {f: 2, c: 9756}, 9759, 12953,
   5813     9450, {f: 2, c: 8554}, {s: 3}, {f: 8, c: 9601}, 9615, 9614, 9613, 9612,
   5814     9611, 9610, 9609, {f: 2, c: 9620}, {f: 2, c: 9581}, 9584, 9583, 9552, 9566,
   5815     9578, 9569, {f: 2, c: 9698}, 9701, 9700, 0, 0, {f: 3, c: 9585}, {s: 20},
   5816     20956, 29081, {f: 9, c: 10102}, {s: 3}, {f: 2, c: 8570}, {s: 3}, 8575,
   5817     8458, 8457, 0, 0, 12292, 8646, {f: 2, c: 8644}, 0, {f: 4, c: 12535}, 0, 0,
   5818     12957, {s: 3}, 13179, {s: 3}, 13107, 13134, {s: 30}, 32394, 35100, 37704,
   5819     37512, 34012, 20425, 28859, 26161, 26824, 37625, 26363, 24389,
   5820     [12033, 20008], 20193, 20220, 20224, 20227, 20281, 20310, 20370, 20362,
   5821     20378, 20372, 20429, 20544, 20514, 20479, 20510, 20550, 20592, 20546,
   5822     20628, 20724, 20696, 20810, 20836, 20893, 20926, 20972, 21013, 21148,
   5823     21158, 21184, 21211, 21248, 0, 21284, 21362, 21395, 21426, 21469, 64014,
   5824     21660, 21642, 21673, 21759, 21894, 22361, 22373, 22444, 22472, 22471,
   5825     64015, 0, 22686, 22706, 22795, 22867, 22875, 22877, 22883, 22948, 22970,
   5826     23382, 23488, 29999, 23512, 0, 23582, 23718, 23738, 23797, 23847, 23891, 0,
   5827     23874, 23917, {f: 2, c: 23992}, 24016, 24353, 24372, 24423, 24503, 24542,
   5828     24669, 24709, 24714, 24798, 24789, 24864, 24818, 24849, 24887, 24880,
   5829     24984, 25107, 25254, 25589, 25696, 25757, 25806, 25934, 26112, 26133,
   5830     26121, 26158, 0, 26148, 26213, 26199, 26201, 64018, 26227, 26265, 26272,
   5831     26290, 26303, 26362, 26382, 0, 26470, 26555, 26706, 26560, 0, 26692, 26831,
   5832     64019, 26984, 64020, 27032, 27106, 27184, 27243, 27206, 27251, 27262,
   5833     27362, 27364, 27606, 27711, 27740, 27782, 27759, 27866, 27908, 28039,
   5834     28015, 28054, 28076, 28111, 28152, 28146, 28156, 28217, 28252, 28199,
   5835     28220, 28351, 28552, 28597, 28661, 28677, 28679, 28712, 28805, 28843,
   5836     28943, 28932, 29020, {f: 2, c: 28998}, 0, 29121, 29182, 29361, 29374,
   5837     29476, 64022, 29559, 29629, 29641, 29654, 29667, 29650, 29703, 29685,
   5838     29734, 29738, 29737, 29742, 0, 29833, 29855, 29953, 30063, 30338, 30364,
   5839     30366, 30363, 30374, 64023, 30534, 21167, 30753, 30798, 30820, 30842,
   5840     31024, {f: 3, c: 64024}, 31124, 64027, 31131, 31441, 31463, 64028, 31467,
   5841     31646, 64029, 32072, 0, 32183, 32160, 32214, 32338, 32583, 32673, 64030,
   5842     33537, 33634, 33663, 33735, 33782, 33864, 33972, 34131, 34137, 34155,
   5843     64031, 34224, {f: 2, c: 64032}, 34823, 35061, 35346, 35383, 35449, 35495,
   5844     35518, 35551, 64034, 35574, 35667, 35711, 36080, 36084, 36114, 36214,
   5845     64035, 36559, 0, 64037, 36967, 37086, 64038, 37141, 37159, 37338, 37335,
   5846     37342, {f: 2, c: 37357}, {f: 2, c: 37348}, 37382, 37392, 37386, 37434,
   5847     37440, 37436, 37454, 37465, 37457, 37433, 37479, 37543, {f: 2, c: 37495},
   5848     37607, 37591, 37593, 37584, 64039, 37589, 37600, 37587, 37669, 37665,
   5849     37627, 64040, 37662, 37631, 37661, 37634, 37744, 37719, 37796, 37830,
   5850     37854, 37880, 37937, 37957, 37960, 38290, 0, 64041, 38557, 38575, 38707,
   5851     38715, 38723, 38733, 38735, [12205, 38737], 0, 38999, 39013,
   5852     {f: 2, c: 64042}, 39207, 64044, 39326, 39502, 39641, 39644, 39797, 39794,
   5853     39823, 39857, 39867, 39936, 40304, 40299, 64045, 40473, 40657, {s: 636},
   5854     8364, 8486, 0, 0, 64256, {f: 2, c: 64259}, 257, 299, 363, 275, 333, 256,
   5855     298, 362, 274, 332, {f: 4, c: 8539}, {f: 2, c: 8531}, 8304,
   5856     {f: 6, c: 8308}, {f: 10, c: 8320}, 461, 282, 0, 7868, 463, 0, 296, 465, 0,
   5857     467, 366, 360, 462, 283, 0, 7869, 464, 0, 297, 466, 0, 468, 367, 361, 593,
   5858     8049, 8048, 509, 0, 596, 0, 0, 601, 0, 0, 602, 0, 0, 603, 8051, 8050, 0,
   5859     331, 629, 652, 0, 0, 658, 643, 720, {s: 682}, {f: 10, c: 12832}, {s: 108},
   5860     {f: 4, c: 12892}, {f: 15, c: 12977}, {s: 50}, {f: 26, c: 9424},
   5861     {f: 26, c: 9398}, {s: 48}, {f: 47, c: 13008}, 0, {f: 10, c: 12928}, 12944,
   5862     {f: 6, c: 12938}, 0, 12959, {s: 6}, {f: 2, c: 12960}, 12955, 12954, 12963,
   5863     12962, 12951, 0, 12956, 12949, {s: 6}, 9676, {s: 11}, 10111,
   5864     {f: 10, c: 9451}, {s: 510}, 8414, {s: 815}, 13274, {s: 3}, 8448, 13250, 0,
   5865     0, 8453, 0, 13169, 0, 0, 13197, 13211, {s: 3}, {f: 2, c: 13271}, {s: 3},
   5866     {f: 2, c: 13057}, 13060, 13062, 0, 13064, 0, 13063, 13066, 0, 13065, 0,
   5867     13067, 0, 13068, {f: 6, c: 13070}, 0, 13079, 0, 13081, 0, {f: 4, c: 13082},
   5868     {f: 3, c: 13087}, 13092, 0, 13093, 0, 0, {f: 2, c: 13096}, 0, 13101, 0, 0,
   5869     {f: 3, c: 13102}, 13106, 0, 0, {f: 2, c: 13108}, 13116, {s: 3}, 13111, 0,
   5870     13112, 13114, 13117, 13121, {f: 3, c: 13118}, {f: 4, c: 13123}, 13128,
   5871     {f: 2, c: 13131}, {f: 2, c: 13135}, 0, 0, 13138, 13140, 0, 0, 13139,
   5872     {f: 2, c: 13141}, {s: 132}, 8501, 976, 8714, 8463, 0, 981, 987, 977, 0,
   5873     {f: 2, c: 9832}, 9836, {s: 5}, 12347, 0, {f: 3, c: 12339}, 8252, 8265,
   5874     {s: 5}, 8723, 0, 8771, {f: 2, c: 8818}, {s: 6}, {f: 2, c: 12312},
   5875     {f: 2, c: 65375}, {s: 10}, 9115, {f: 2, c: 9117}, 9120, {s: 4}, 9121,
   5876     {f: 2, c: 9123}, 9126, {s: 12}, [9116, 9119, 9122, 9125, 9130], {s: 8},
   5877     9986, 0, 0, 12349, 0, 12447, 0, 0, 8709, 8864, 8854, 8856, 8853, 8855,
   5878     {s: 4}, 9664, 9654, {s: 4}, 8656, 8596, {f: 2, c: 8600}, {f: 2, c: 8598},
   5879     8652, 8651, {s: 10}, 12336, 8967, {s: 8}, 10048, 10047, {s: 7}, 9643, 0,
   5880     9642, 0, 10010, {s: 12}, 9702, {s: 4}, 10070, {s: 379}, {f: 2, c: 65093},
   5881     {s: 679}, 64103, 64098, 32227, [12232, 40643], 28331, 64082, 64061, 64069,
   5882     64062, 27114, 28212, 64096, 64071, 64056, 64066, 64078, 34395, 64105,
   5883     64052, 64099, 25581, 25802, 30799, 64084, 63856, 64077, 64097, 64072,
   5884     64076, {f: 2, c: 64091}, 64081, 64067, 64090, 28041, 29376, 0, 194885,
   5885     64086, 64080, 64049, 64059, 24034, 64063, 64101, 21373, 64055, 64095,
   5886     24501, 64064, 0, 64083, 0, 64085, 64104, 64068, 64089, 26202, 64053, 64075,
   5887     64100, 64065, 64048, 0, 64057, 64051, 27493, 64058, 27599, 64050, 25150,
   5888     64079, 63773, 63964, 63798, 28122, 63952, 26310, 27511, 64087, 37706, 0,
   5889     37636, {s: 120}, 133390, {s: 120}, 35999, 11991, [11965, 158033], {s: 5},
   5890     37555, 38321, 0, 0, 194812, {s: 13}, 194965, {s: 8}, 194794, 0, 26478,
   5891     11974, 0, 194594, {s: 13}, 13314, 0, 0, 26083, {s: 4}, 134071, {s: 10},
   5892     171339, 0, 194611, 24378, {s: 8}, 11945, 0, 20465, {s: 7}, 63753, {s: 7},
   5893     11964, 0, 0, 194732, 26435, {s: 3}, 133732, 35329, 25142, 0, 0, 21555,
   5894     23067, {s: 3}, 25221, 0, 0, 194819, {s: 6}, 21567, {s: 9}, 27506, {s: 4},
   5895     29986, 19256, 0, 0, 24063, {s: 6}, 194827, 29626, 134047, {s: 3}, 194600,
   5896     0, 194849, {s: 5}, 194623, {s: 16}, 194675, {f: 2, c: 11916}, 23577,
   5897     {s: 3}, 131083, 23426, 194642, {s: 5}, 11997, [11999, 39136],
   5898     [11998, 169599], 14221, 0, [11927, 14586], 0, 194887, 0, [11909, 20155],
   5899     131490, {s: 7}, 13599, 0, 194738, 0, 0, [11971, 35200], {s: 4}, 31237,
   5900     {s: 4}, 35498, 0, 32085, 0, 28568, {s: 7}, 25591, 30246, {s: 4},
   5901     [11978, 163767], {s: 5}, 146686, {s: 5}, 13351, 0, 0, 33067, 0, 0, 194842,
   5902     {s: 5}, 11950, {s: 5}, 194714, {s: 3}, 194831, {s: 19}, 22305, 135741,
   5903     194586, 0, 64003, {s: 7}, 21534, 15240, 20839, {s: 4}, 63839, {s: 9},
   5904     20023, {s: 13}, [11946, 150804], 24421, 23020, 194658, 0, 24217, {s: 46},
   5905     13416, {s: 8}, 21200, {s: 9}, 26625, 0, 195024, 195039, {s: 5}, 153215, 0,
   5906     0, 11959, {s: 4}, 36534, 63775, {s: 3}, 63875, {s: 5}, 31867, 63906, 0,
   5907     63898, 0, [11961, 32770], 157360, {s: 4}, [11911, 132648], 0, 0, 131210,
   5908     194604, [11915, 13630], {s: 4}, 21589, 0, 22841, 0, 0, 23414, 194669,
   5909     23572, 14306, 23782, 0, 20040, 0, 0, 194742, {s: 4}, 158105, 25371, 0, 0,
   5910     26211, 0, 194779, 0, 0, 27126, 27014, {s: 3}, 27596, 0, 28183, 0, 0, 27818,
   5911     {s: 3}, [11942, 20012], 0, 0, 29935, 30069, 30188, 30286, 16305, 30570,
   5912     30633, {s: 6}, 31571, 0, 0, 16996, {s: 3}, 194924, 0, 0, 32328, {s: 5},
   5913     11955, {s: 4}, 33089, 17491, 0, [11966, 33401], [11967, 64094],
   5914     [11968, 64093], 0, 20857, 33626, {s: 3}, 17701, 0, 34292, 131248, {s: 4},
   5915     34429, 0, 13358, 35014, {s: 6}, 18406, {s: 8}, 36808, {s: 19}, 166279, 0,
   5916     0, 167447, 0, 0, 38969, {s: 6}, 39432, {s: 4}, 39903, {s: 10}, 148206,
   5917     {s: 5}, 21385, 0, 64017, 194785, 0, 146622, 132625, 0, {f: 2, c: 19972},
   5918     19999, 20011, {f: 2, c: 20015}, {f: 2, c: 20032}, 20036, [11907, 20058],
   5919     20095, 20109, 20118, 20153, 20176, 20192, 20221, 20223, 20235, 20245,
   5920     20320, 20283, 20297, 20308, 20346, {f: 2, c: 20349}, 20375, 20414, 20431,
   5921     20477, {f: 2, c: 20480}, 20496, 20507, 20519, 20526, 20567, 20582, 20586,
   5922     20539, 20623, 20630, 20636, 20684, 20710, 20713, 20719, 20744, 20747,
   5923     20752, 20763, 20766, 20831, 20897, 20924, 0, 20974, 20980, 20993,
   5924     [11913, 20994], 21011, 21065, 21089, 21094, 21139, 21192, 21232,
   5925     {f: 2, c: 21258}, 21310, 21324, 21323, 21345, 21356, 21419, 21466, 21478,
   5926     21493, 21543, 21581, 21606, 21611, 21620, 21645, 21654, 21665, 21677,
   5927     21689, 21695, 21702, 21709, 21774, 21803, 21813, 21834, 21856, 0, 21896,
   5928     21902, 22024, {f: 2, c: 22030}, 22071, 22079, 22089, 22091, 22095, 22118,
   5929     22121, 22127, {f: 2, c: 22129}, 22165, 22170, {f: 2, c: 22188}, 22193,
   5930     22217, 22237, 22244, 22282, 22293, 22307, 22319, {f: 2, c: 22323}, 22348,
   5931     22384, 22412, 22428, 22456, 22502, 22509, {f: 2, c: 22517}, 22527, 22537,
   5932     22560, 22578, 22652, 22656, 22697, 22734, 22736, 22740, 22746, 22761,
   5933     22796, 22820, 22831, 22881, 22893, 22986, 22994, 23005, {f: 2, c: 23011},
   5934     23044, 23052, 23075, 23111, 23125, 23139, 23149, 23166, 23198, 23207,
   5935     23212, 23219, 23264, 23296, 23321, 23333, 23341, 23361, 23420,
   5936     {f: 2, c: 23422}, 23434, [11919, 23587], 23595, 23600, 23651, 23657, 23676,
   5937     23755, 23762, 23796, 23844, 23846, 23875, 23878, 23882, 23954, 23956,
   5938     23961, 23968, 24024, 24032, 24056, 24064, 24082, {f: 2, c: 24084}, 24088,
   5939     24110, 24152, {f: 2, c: 24171}, 24232, 24234, {f: 2, c: 24254}, 0, 24274,
   5940     24327, 24334, {f: 2, c: 24348}, 24354, 24360, 24374, 24379, 24384,
   5941     [12089, 24400], 24408, 24420, 24457, 24476, 24487, 24484, 24495, 24504,
   5942     [11926, 24516], 24521, 24545, 24553, 24557, 24572, 24599, 24602, 24627,
   5943     24673, 24703, 24734, 24740, 24752, 24779, 24795, 24824, {f: 3, c: 24850},
   5944     24860, 24956, 24973, 24991, 25000, 25026, 25055, 25109, 25129, 25155,
   5945     25158, [11928, 25164], 25169, 25174, 25284, 25340, 25354, 25357, 25368,
   5946     25401, {f: 2, c: 25410}, 25445, 25460, 25469, 25476, 25479, 25488, 25502,
   5947     25553, 25564, 25609, 25616, 25634, 25684, 25691, 25709, 25723,
   5948     {f: 2, c: 25790}, 25829, 25847, 25851, 25860, 25878, 25881, 25927, 25959,
   5949     25985, 25989, 26050, 26096, 26098, 26156, 26188, {f: 2, c: 26203}, 26209,
   5950     26219, 0, 26276, 26312, 26348, 26373, 26387, 26419, 26440, 26444, 26486,
   5951     26491, 26544, 26546, 26617, 26583, 26585, 26608, 26668, {f: 2, c: 26672},
   5952     26715, 26738, 26741, 26746, 26756, 26789, 26802, 26832, 26838, 26856,
   5953     26861, {f: 2, c: 26864}, 26876, 26897, 26899, 26933, 26939, 26967, 26979,
   5954     26994, {f: 2, c: 27007}, 27046, 27053, 27063, {f: 2, c: 27094}, 27137,
   5955     27151, 27157, 27176, 27188, 27198, 27205, {f: 2, c: 27216}, 27222, 27227,
   5956     27267, 27273, 27281, {f: 3, c: 27293}, 27356, 27367, 27372, 27422, 27428,
   5957     27445, 27462, 27478, 27488, 27522, 27582, 27617, 27633, 27664, 27699,
   5958     [11937, 27701], 11938, 27737, 27766, 27771, 27781, 27797, 27804, 27856,
   5959     27860, 27862, 27872, {f: 2, c: 27883}, 27886, 27914, 27918, 27921, 27950,
   5960     27991, 27998, 28005, 28034, 28095, 28100, 28106, 28118, 28137, 28194,
   5961     28241, 28359, 28362, 28366, 28413, 28442, 28458, 28463, 28467, 28506,
   5962     28510, 28514, 28541, 28555, 28557, 28562, 28564, 28570, {f: 2, c: 28583},
   5963     28598, 28634, 28638, 0, 28729, 28732, 0, 28756, {f: 2, c: 28765}, 28772,
   5964     [11939, 28780], 28798, 28801, 28821, 28855, {f: 2, c: 28883}, 28888, 28892,
   5965     28935, 28960, 28977, 29002, 29010, 29024, 29049, 29074, 0, 29131, 29139,
   5966     29142, 29184, 29213, 29227, 29240, 29249, 29267, {f: 2, c: 29269}, 29276,
   5967     29325, [11944, 29357], 29364, 29383, 29435, {f: 2, c: 29444}, 29480, 29489,
   5968     29507, 29548, 29564, 29571, {f: 2, c: 29573}, 29589, {f: 3, c: 29598},
   5969     29606, 29611, 29621, 29623, 29628, 29647, 29657, 29673, 29684, 29693,
   5970     29700, 29706, {f: 2, c: 29722}, 29732, 29736, 29740, {f: 3, c: 29743},
   5971     29753, 29764, 29767, 29771, 29773, 29777, 29783, 29798, 29803, 29809,
   5972     29824, {f: 3, c: 29829}, 29840, 29848, 29852, 29856, 29859, 29864, 29867,
   5973     29877, 29887, 29896, 29914, 29918, 30030, 30073, 30081, 30096,
   5974     [12135, 30098], 30099, 30132, 30180, 30201, 30208, 30218, {f: 2, c: 30229},
   5975     30233, 30238, 30253, 30261, 30275, 30283, 30309, 30317, 30319, 30321,
   5976     30324, {f: 2, c: 30372}, 30405, 30412, 30444, 30460, 30516, 30518, 30556,
   5977     {f: 2, c: 30559}, 30578, 30589, 30613, 30634, 30694, 30704, 30708, 30726,
   5978     30754, {f: 2, c: 30765}, 30768, 30773, 30824, 30878, 30920, 30924, 30926,
   5979     30948, {f: 2, c: 30944}, 30962, 30967, 30971, 31025, 0, [11949, 31035],
   5980     31037, 31045, {f: 2, c: 31067}, 31115, 31126, 31128, [12145, 31160], 31163,
   5981     31178, 31194, 31235, 31241, 31249, 31262, 31277, 31289, 31301, 31308,
   5982     31325, 0, 31341, 31352, 31392, 31395, 31411, {f: 2, c: 31419}, 31430,
   5983     31495, 31508, 31527, 31537, 31559, 31566, 31584, 31593, 31597, 31602,
   5984     31633, 31663, 31703, 31705, 31755, 31759, 31776, 31782, 31793, 31798,
   5985     31825, 31833, 31847, 31854, 31856, 31932, 31935, {f: 2, c: 31944}, 31959,
   5986     31961, 31965, 31979, {f: 3, c: 32007}, 32019, 32029, 32035, 32065, 32083,
   5987     32089, 32093, 32122, 32134, {f: 2, c: 32139}, 32204, 32235, 32241, 32249,
   5988     32264, 32273, 32277, 32288, 32327, 32354, 32366, 32371, 32397, 32401,
   5989     32408, 32580, 32591, [11947, 11954, 32594], [11953, 32595], 32609, 32657,
   5990     32703, 32718, 32735, 32741, 32748, {f: 2, c: 32750}, 32762, 32782, 32785,
   5991     32788, 32804, 32806, 32826, 32828, 32864, 32881, 32885, 32926, 32934,
   5992     32939, {f: 2, c: 32983}, 33046, 33048, 33082, 33098, 33100, 33153, 33156,
   5993     33204, 33231, 33273, 33283, 33313, 33330, 33332, 33350, 33355, 33359,
   5994     33422, 33454, 33463, 33470, 33478, 33534, 33603, 33617, 33621, 33670,
   5995     33677, 33682, 33688, 33705, {f: 2, c: 33727}, 33770, 33807, 33809, 33866,
   5996     33910, 33960, 33967, 33984, 33986, 34032, 34045, 34060, 34100, 34142,
   5997     34191, 34231, 34254, 34221, 34322, 34345, 34386, 34403, 34412, 34415,
   5998     34426, 34445, 34449, 34456, {f: 2, c: 34471}, 34554, 34557, 34571, 34579,
   5999     34585, 34590, 34600, 34622, 34673, 34696, 34713, {f: 2, c: 34732}, 34741,
   6000     34774, 34795, 34797, 34817, 0, 34822, 34827, 34836, 34844, 34902, 34911,
   6001     [11970, 34916], 34968, 34986, {f: 2, c: 35005}, 35018, 35026, 35035,
   6002     {f: 2, c: 35056}, 35078, {f: 3, c: 35096}, 35111, 35120, 35134, 35195,
   6003     35284, 35286, 35301, 35313, 35335, 35343, 35349, 35362, 35406, 35455,
   6004     35572, 35615, 35639, {f: 2, c: 35651}, 35668, 35740, 35742, 35911, 35924,
   6005     35955, 36004, 36057, 36065, 36088, 36094, 36123, 36201, 36204, 36228,
   6006     36237, 36245, 36262, 36294, 36302, 36324, 36332, 36384, 36427, 36460,
   6007     36464, 36474, 36498, 36526, 36531, 36561, 36564, 36601, 36631, 36662,
   6008     36774, [12193, 36789], [11981, 36790], 0, 36832, 36836, 36854, 36866,
   6009     36908, 36932, 37000, 37013, 37017, 37019, 37026, 37044, 37079, 37085,
   6010     37108, 37143, 37148, 37169, 37178, 37181, 37192, 37211, 37217, 37220,
   6011     37262, 37278, 37288, {f: 2, c: 37293}, 37298, 37308, 37360, 37367, 37371,
   6012     37383, 37416, 37427, 37432, 37443, 37447, 37455, 37472, 37570,
   6013     {f: 2, c: 37579}, 37599, 37645, 37653, 37663, 37671, 37703, 37714, 0,
   6014     37738, 37741, 37787, 37818, 37801, 37825, 37834, 37858, 37882, 37885,
   6015     37903, 37940, 37951, 37973, 37995, 38002, [11986, 38264], 38310, 38313, 0,
   6016     38324, 38333, 38362, [11983, 11990, 38429], 38465, 38488, 38532, 38564,
   6017     38569, 38610, 195060, 38622, 38633, 38641, 38658, 38665, 38746, 38755,
   6018     38766, 38771, 38810, 38818, {f: 2, c: 38837}, 38873, 38878, 38900, 38922,
   6019     38926, 38942, 38947, 38955, 38974, {f: 2, c: 38994}, 39001, 39020, 39096,
   6020     39098, 39103, 39112, 39141, {f: 2, c: 39218}, 39232, 39245, 39260, 39263,
   6021     39345, {f: 2, c: 39353}, 39369, 39426, 39446, 39460, 39463,
   6022     {f: 2, c: 39469}, 39478, 39480, 39498, 39510, {f: 2, c: 39605}, 39673,
   6023     39683, 39712, {f: 2, c: 39731}, 39795, 39801, 39847, 39873, 39879, 39895,
   6024     39911, 39915, 39927, 39930, 39933, 39947, 39975, 39978, 39990, 40001,
   6025     40019, 40035, 40048, 40055, 40194, 40258, 40263, 40291, 40297, 40316,
   6026     40318, 40333, 40369, 40387, 40391, 40406, 40415, 40427, 40436, 40469,
   6027     40477, 40612, 40616, 40620, 40679, 40686, 40720, 40722, 40727, 40729,
   6028     40751, 40759, 40761, 40769, 40773, 40791, 40808, 40817, 40821, 40848,
   6029     40852, 40866, 0, 13317, 194564, 22048, 24267, 11925, 0, 144954, 0, 28665,
   6030     28390, 29107, [11940, 64073], {s: 4}, [11980, 64102], 0, 23986, 0, 20435,
   6031     20697, 20720, 20931, 22134, 27220, 27905, 28112, 28226, 28377, 29668,
   6032     29729, 30060, 30801, 34805, 144382, 29608, 15091, 13531, 17420, 16010, 0,
   6033     0, 19432, 0, 16090, 15138, 0, 17786, 16531, 0, 18021, 16643, 17043, 18094,
   6034     13448, 140809, {f: 3, c: 63584}, 63610, 63615, {s: 23}, {f: 2, c: 8836},
   6035     {f: 2, c: 8842}, 8713, 0, {f: 2, c: 8965}, {s: 9}, {f: 2, c: 8741},
   6036     {s: 14}, 8802, 0, 8773, 8776, {f: 2, c: 8822}, {s: 4}, 8487, {s: 209},
   6037     {f: 2, c: 8922}, 8533, 8984, {f: 2, c: 7742}, {f: 2, c: 504}, 470, 472,
   6038     474, 476, 260, 728, 317, 346, 350, 356, 377, 379, 261, 731, 318, 347, 711,
   6039     351, 357, 378, 733, 380, 340, 258, 313, 262, 268, 280, 270, 323, 327, 336,
   6040     344, 368, 354, 341, 259, 314, 263, 269, 281, 271, 273, 324, 328, 337, 345,
   6041     369, 355, 729, 264, 284, 292, 308, 348, 364, 265, 285, 293, 309, 349, 365,
   6042     625, 651, 638, 620, 622, 633, 648, 598, 627, 637, 642, 656, 635, 621, 607,
   6043     626, 669, 654, 609, 624, 641, 295, 661, 660, 614, 664, 450, 595, 599, 644,
   6044     608, 403, 616, 649, 600, 604, 606, 592, 623, 650, 612, 594, 653, 613, 674,
   6045     673, 597, 657, 634, 615, 865, 712, 716, 721, 8255, 783, {f: 5, c: 741}, 0,
   6046     0, 805, 812, 825, 796, {f: 2, c: 799}, 829, 809, 815, 734, 804, 816, 828,
   6047     820, {f: 2, c: 797}, {f: 2, c: 792}, 810, {f: 2, c: 826}, 794, {s: 3},
   6048     {f: 2, c: 610}, 618, 628, 630, 632, 640, 655, 665, 668, 671, 688, 690, 695,
   6049     704, {f: 2, c: 736}, {s: 6}, 8862, {s: 287}, 12348, 12543, 0,
   6050     {f: 2, c: 12310}, 9838, 9835, {f: 2, c: 10548}, 10687, 0, 12448, 0,
   6051     {f: 2, c: 10746}, {s: 13}, 962, {f: 10, c: 9461}, {f: 2, c: 9750}, 9649,
   6052     {f: 10, c: 12784}, 0, {f: 6, c: 12794}, {f: 15, c: 9150}, 0, 0, 10003, 0,
   6053     9251, 9166, {f: 4, c: 9680}, {f: 2, c: 8263}, 0, 8273, 8258,
   6054     {f: 16, c: 12688}, {s: 13}, {f: 2, c: 9136}, {f: 12, c: 9842},
   6055     {f: 2, c: 12441}, 8413, {s: 450}, 20296, 20319, 20330, 20332, 20494, 20504,
   6056     20545, 20722, 20688, 20742, 20739, 20789, 20821, 20823, 13493, 20938,
   6057     20962, 21079, 21196, 21206, 21243, 21276, 21347, 21405, 21522, 21631,
   6058     21640, 21840, 21889, 21933, 21966, 22075, 22174, 22185, 22195, 22391,
   6059     22396, 135963, 22479, 22500, 22628, 22665, 136302, 22738, 22752, 34369,
   6060     22923, 22930, 22979, 23059, 23143, 23159, 23172, 23236, 137405, 23421,
   6061     23443, 23570, 64060, 136884, 23674, 23695, 23711, 23715, 23722, 23760,
   6062     138804, 23821, 23879, 23937, 23972, 23975, 24011, 24158, 24313, 24320,
   6063     24322, 24355, 24381, 24404, 24445, 24589, 24596, 24600, 24629, 24647,
   6064     24733, 24788, 24797, 24875, 25020, 25017, 25122, 25178, 25199, 25302,
   6065     25468, 25573, 25721, 25796, 25808, 25897, 26013, 26170, 26146, 26155,
   6066     26160, 26163, 26184, 143812, {f: 2, c: 26231}, 26253, 26299, 26331, 26344,
   6067     26439, 26497, 26515, 26520, 26523, 26620, 26653, 26787, 26890, 26953,
   6068     144836, 26946, 26980, 27045, 27087, 15286, 15299, 27113, 27125, 145215,
   6069     27195, 145251, 27284, 27301, 15375, 27419, 27436, 27495, 27561, 27565,
   6070     27607, 27647, 27653, 27764, 27800, 27899, 27846, 27953, 27961, 27967,
   6071     27992, 28052, 28074, 28123, 28125, 28228, 28254, 28337, 28353, 28432,
   6072     28505, 28513, 28542, 28556, 28576, 28604, 28615, 28618, 28656, 28750,
   6073     28789, 28836, 28900, 28971, 28958, 28974, 29009, 29032, 29061, 29063,
   6074     29114, 29124, 29205, 15935, 29339, 149489, 29479, 29520, 29542, 29602,
   6075     29739, 29766, 29794, 29805, 29862, 29865, 29897, 29951, 29975, 16242,
   6076     30158, 30210, 30216, 30308, 30337, 30365, 30378, 30390, 30414, 30420,
   6077     30438, 30449, 30474, 30489, {f: 2, c: 30541}, 30586, 30592, 30612, 30688,
   6078     152718, 30787, 30830, 30896, 152846, 30893, 30976, 31004, 31022, 31028,
   6079     31046, 31097, 31176, 153457, 31188, 31198, 31211, 31213, 31365, 154052,
   6080     31438, 31485, 31506, 31533, 31547, 31599, 31745, 31795, 155041, 31853,
   6081     31865, 31887, 31892, 31904, 31957, 32049, 32092, 32131, 32166, 32194,
   6082     32296, 32663, 32731, 32821, 32823, 32970, 32992, 33011, 33120,
   6083     {f: 2, c: 33127}, 33133, 33211, 33226, 33239, 17499, 33376, 33396, 158463,
   6084     33441, {f: 2, c: 33443}, 33449, 33471, 33493, 33533, 33536, 33570, 33581,
   6085     33594, 33607, 33661, 33703, 33743, 33745, 33761, 33793, 33798, 33887,
   6086     33904, 33907, 33925, 33950, 33978, 159296, 34098, 34078, 34095, 34148,
   6087     34170, 34188, 34210, 34251, 34285, 34303, {f: 2, c: 34308}, 34320, 159988,
   6088     34328, 34360, 34391, 34402, 17821, 34421, 34488, 34556, 34695, 17898,
   6089     34826, 34832, 35022, 161412, 35122, 35129, 35136, 35220, 35318, 35399,
   6090     35421, 35425, 35445, 35536, 35654, 35673, 35689, 35741, 35913, 35944,
   6091     36271, 36305, 36311, 36387, 36413, 36475, 164471, 18500, 36602, 36638,
   6092     36653, 36692, 164813, 36840, 36846, 36872, 36909, 37015, 37043, 37054,
   6093     {f: 2, c: 37060}, 37063, 37103, 37140, 37142, {f: 2, c: 37154}, 37167,
   6094     37172, 37251, 37361, 37705, {f: 2, c: 37732}, 37795, 37855, 37892, 37939,
   6095     37962, 37987, 38001, 38286, 38303, 38316, 38326, 38347, 38352, 38355,
   6096     18864, 38366, 38565, 38639, 38734, 38805, 38830, 38842, 38849, 38857,
   6097     38875, 38998, 39143, 39256, 39427, 39617, 39619, 39630, 39638, 39682,
   6098     39688, 19479, 39725, 39774, 39782, 39812, 39818, 39838, 39886, 39909,
   6099     39928, 39971, {f: 2, c: 40015}, 40037, {f: 2, c: 40221}, 40259, 40274,
   6100     40330, 40342, 40384, 40364, 40380, 172432, 40423, 40455, 40606, 40623,
   6101     40855, 131209, 19970, 19983, 19986, 20009, 20014, 20039, 131234, 20049,
   6102     13318, 131236, 20073, 20125, 13356, 20156, 20163, 20168, 20203, 20186,
   6103     20209, 20213, 20246, 20324, 20279, 20286, 20312, 131603, {f: 2, c: 20343},
   6104     20354, 20357, 20454, 20402, 20421, 20427, 20434, 13418, 20466, 20499,
   6105     20508, 20558, 20563, 20579, 20643, 20616, {f: 2, c: 20626}, 20629, 20650,
   6106     131883, 20657, {f: 2, c: 20666}, 20676, 20679, 20723, 131969, 20686,
   6107     131953, 20692, 20705, 13458, 132089, 20759, 132170, 20832, 132361, 20851,
   6108     20867, 20875, 13500, 20888, 20899, 20909, 13511, 132566, 20979, 21010,
   6109     21014, 132943, 21077, 21084, 21100, 21111, 21124, 21122, 133127, 21144,
   6110     133178, 21156, {f: 2, c: 21178}, 21194, 21201, 133305, 21239, 21301, 21314,
   6111     133500, 133533, 21351, 21370, 21412, 21428, 133843, 21431, 21440, 133917,
   6112     {f: 2, c: 13661}, 21461, 13667, 21492, 21540, 21544, 13678, 21571, 21602,
   6113     21612, 21653, 21664, 21670, 21678, 21687, 21690, 21699, 134469, 21740,
   6114     21743, 21745, 21747, {f: 2, c: 21760}, 21769, 21820, 21825, 13734, 21831,
   6115     13736, 21860, 134625, 21885, 21890, 21905, 13765, 21970, 134805, 134765,
   6116     21951, 21961, 21964, 21969, 21981, 13786, 21986, 134756, 21993, 22056,
   6117     135007, 22023, 22032, 22064, 13812, 22077, 22080, 22087, 22110, 22112,
   6118     22125, 13829, 22152, 22156, 22173, 22184, 22194, 22213, 22221, 22239,
   6119     22248, {f: 2, c: 22262}, 135681, 135765, 22313, 135803, {f: 2, c: 22341},
   6120     22349, 135796, 22376, 22383, {f: 3, c: 22387}, 22395, 135908, 135895,
   6121     22426, {f: 2, c: 22429}, 22440, 22487, 135933, 22476, 135990, 136004,
   6122     22494, 22512, 13898, 22520, 22523, 22525, 22532, 22558, 22567, 22585,
   6123     136132, 22601, 22604, 22631, {f: 2, c: 22666}, 22669, {f: 2, c: 22671},
   6124     22676, 22685, 22698, 22705, 136301, 22723, 22733, 22754, {f: 2, c: 22771},
   6125     {f: 2, c: 22789}, 22797, 22804, 136663, 13969, 22845, 13977, 22854, 13974,
   6126     158761, 22879, 136775, {f: 2, c: 22901}, 22908, 22943, 22958, 22972, 22984,
   6127     22989, 23006, 23015, 23022, 136966, 137026, 14031, 23053, 23063, 23079,
   6128     23085, 23141, 23162, 23179, 23196, {f: 2, c: 23199}, 23202, 23217, 23221,
   6129     23226, 23231, 23258, 23260, 23269, 23280, 23278, 23285, 23304, 23319,
   6130     23348, 23372, 23378, 23400, 23407, 23425, 23428, 137667, 23446, 23468,
   6131     {f: 2, c: 14177}, 23502, 23510, 14188, 14187, 23537, 23549, 14197, 23555,
   6132     23593, 138326, 23647, {f: 2, c: 23655}, 23664, 138541, 138565, 138616,
   6133     138594, 23688, 23690, 14273, 138657, 138652, 23712, 23714, 23719, 138642,
   6134     23725, 23733, 138679, 23753, 138720, 138803, 23814, 23824, 23851, 23837,
   6135     23840, 23857, 23865, 14312, 23905, 23914, 14324, 23920, 139038, 14333,
   6136     23944, 14336, 23959, 23984, 23988, 139126, 24017, 24023, 139258, 24036,
   6137     24041, 14383, 14390, 14400, 24095, 24126, 24137, 14428, 24150, 14433,
   6138     {f: 2, c: 24173}, 139643, 24229, 24236, 24249, 24262, 24281, 140062, 24317,
   6139     24328, 140205, 24350, 24391, 24419, 24434, 24446, 24463, 24482, 24519,
   6140     24523, {f: 3, c: 24530}, 24546, {f: 2, c: 24558}, 24563, 14615, 24610,
   6141     24612, 14618, 24652, 24725, 24744, 141043, 24753, 24766, 24776, 24793,
   6142     24814, 24821, 24848, 24857, 24862, 24890, 14703, 24897, 24902, 24928,
   6143     141403, {f: 2, c: 24978}, 24983, 24997, 25005, 141483, 25045, 25053, 25077,
   6144     141711, 25123, 25170, 25185, 25188, 25211, 25197, 25203, 25241, 25301,
   6145     142008, 25341, 25347, 25360, {f: 2, c: 142159}, 25394, 25397,
   6146     {f: 2, c: 25403}, 25409, 25412, 25422, 142150, 25433, 142365, 142246,
   6147     25452, 25497, 142372, 25492, 25533, {f: 2, c: 25556}, 25568,
   6148     {f: 2, c: 25579}, 25586, 25630, 25637, 25641, 25647, 25690, 25693, 25715,
   6149     25725, 25735, 25745, 25759, {f: 2, c: 25803}, 25813, 25815, 142817, 25828,
   6150     25855, 14958, 25871, 25876, 14963, 25886, 25906, 25924, 25940, 25963,
   6151     25978, 25988, 25994, 26034, 26037, 26040, 26047, 26057, 26068, 15062,
   6152     26105, 26108, 26116, 26120, 26145, 26154, 26181, 26193, 26190, 15082,
   6153     143811, 143861, 143798, 26218, {f: 2, c: 26220}, 26235, 26240, 26256,
   6154     26258, 15118, 26285, 26289, 26293, 15130, 15132, 15063, 26369, 26386,
   6155     144242, 26393, 144339, 144338, 26445, 26452, 26461, 144336, 144356, 144341,
   6156     26484, 144346, 26514, 144351, 33635, 26640, 26563, 26568, 26578, 26587,
   6157     26615, 144458, 144465, 144459, 26648, 26655, 26669, 144485, 26675, 26683,
   6158     26686, 26693, 26697, 26700, 26709, 26711, 15223, 26731, 26734, 26748,
   6159     26754, 26768, 26774, 15213, {f: 3, c: 26776}, 26780, {f: 2, c: 26794},
   6160     26804, 26811, 26875, 144612, 144730, 26819, 26821, 26828, 26841,
   6161     {f: 2, c: 26852}, 26860, 26871, 26883, 26887, 15239, 144788, 15245, 26950,
   6162     26985, 26988, 27002, 27026, 15268, 27030, 27056, 27066, 27068, 27072,
   6163     27089, 144953, 144967, 144952, 27107, {f: 2, c: 27118}, 27123, 15309,
   6164     27124, 27134, 27153, 27162, 27165, 145180, {f: 2, c: 27186}, 27199, 27209,
   6165     27258, 27214, 27218, 27236, 145164, 27275, 15344, 27297, 145252, 27307,
   6166     27325, 27334, 27348, 27344, 27357, 145407, 145383, {f: 3, c: 27377}, 27389,
   6167     145444, 27403, {f: 3, c: 27407}, 145469, 27415, 15398, 27439, 27466, 27480,
   6168     27500, 27509, [11934, 27514], 27521, 27547, 27566, 146072, 27581,
   6169     {f: 3, c: 27591}, 27610, {f: 2, c: 27622}, 27630, 27650, 27658, 27662,
   6170     27702, 146559, 27725, 27739, 27757, 27780, 27785, 15555, 27796, 27799,
   6171     27821, 27842, 15570, 27868, 27881, 27885, 146688, 27904, 27940,
   6172     {f: 2, c: 27942}, 27751, 27951, 27964, 27995, 28000, 28016,
   6173     {f: 2, c: 28032}, 28042, 28045, 28049, 28056, 146752, 146938, 146937,
   6174     146899, 28075, 28078, 28084, 28098, 27956, 28104, 28110, 28127, 28150,
   6175     28214, 28190, 15633, 28210, {f: 2, c: 28232}, {f: 2, c: 28235}, 28239,
   6176     {f: 2, c: 28243}, 28247, 28259, 15646, 28307, 28327, 28340, 28355, 28469,
   6177     28395, 28409, 28411, 28426, 28428, 28440, 28453, 28470, 28476, 147326,
   6178     28498, 28503, 28512, 28520, 28560, 28566, 28606, 28575, 28581, 28591,
   6179     15716, {f: 2, c: 28616}, 28649, 147606, 28668, 28672, 28682, 28707, 147715,
   6180     28730, 28739, 28743, 28747, 15770, 28773, 28777, 28782, 28790, 28806,
   6181     28823, 147910, 28831, 28849, 147966, 28908, 28874, 28881, 28931, 28934,
   6182     28936, 28940, 15808, 28975, 29008, 29011, 29022, 15828, 29078, 29056,
   6183     29083, 29088, 29090, {f: 2, c: 29102}, 148412, 29145, 29148, 29191, 15877,
   6184     29236, 29241, 29250, 29271, 29283, 149033, {f: 2, c: 29294}, 29304, 29311,
   6185     29326, 149157, 29358, 29360, 29377, 15968, 29388, 15974, 15976, 29427,
   6186     29434, 29447, 29458, {f: 2, c: 29464}, 16003, 29497, 29484, 29491, 29501,
   6187     29522, 16020, 29547, 149654, {f: 2, c: 29550}, 29553, 29569, 29578, 29588,
   6188     29592, 29596, 29605, 29625, 29631, 29637, 29643, 29665, 29671, 29689,
   6189     29715, 29690, 29697, 29779, 29760, 29763, 29778, 29789, 29825, 29832,
   6190     150093, 29842, 29847, 29849, 29857, 29861, 29866, 29881, 29883, 29882,
   6191     29910, 29912, 29931, 150358, 29946, 150383, 29984, 29988, 29994, 16215,
   6192     150550, {f: 2, c: 30013}, 30016, 30024, 30032, 30034, 30066, 30065, 30074,
   6193     {f: 2, c: 30077}, 30092, 16245, 30114, 16247, 30128, 30135,
   6194     {f: 2, c: 30143}, 30150, 30159, 30163, 30173, {f: 2, c: 30175}, 30183,
   6195     30190, 30193, 30211, 30232, 30215, 30223, 16302, 151054, 30227,
   6196     {f: 2, c: 30235}, 151095, 30245, 30248, 30268, 30259, 151146, 16329, 30273,
   6197     151179, 30281, 30293, 16343, 30318, 30357, 30369, 30368, {f: 2, c: 30375},
   6198     30383, 151626, 30409, 151637, 30440, 151842, 30487, 30490, 30509, 30517,
   6199     151977, 16441, 152037, 152013, 30552, 152094, 30588, 152140, 16472, 30618,
   6200     30623, 30626, 30628, {f: 2, c: 30686}, 30692, 30698, 30700, 30715, 152622,
   6201     30725, 30729, 30733, 30745, 30764, 30791, 30826, 152793, 30858, 30868,
   6202     30884, 30877, 30879, 30907, 30933, 30950, {f: 2, c: 30969}, 30974, 152999,
   6203     30992, 31003, 31013, 31050, 31064, 16645, 31079, 31090, 31125, 31137,
   6204     31145, 31156, 31170, 31175, {f: 2, c: 31180}, 31190, 16712, 153513, 153524,
   6205     16719, 31242, 31253, 31259, 16739, 31288, 31303, 31318, 31321, 31324,
   6206     31327, 31335, 31338, 31349, 31362, 31370, 31376, 31404, 154068, 16820,
   6207     31417, 31422, 16831, 31436, 31464, 31476, 154340, 154339, 154353, 31549,
   6208     31530, {f: 2, c: 31534}, 16870, 16883, 31615, 31553, 16878, 31573, 31609,
   6209     31588, 31590, 31603, 154546, 16903, 31632, 31643, 16910, 31669, 31676,
   6210     31685, 31690, 154699, 154724, 31700, 31702, 31706, 31722, 31728, 31747,
   6211     31758, 31813, 31818, 31831, 31838, 31841, 31849, 31855, 155182, 155222,
   6212     155237, 31910, 155234, {f: 2, c: 31926}, 155352, 31940, 155330, 31949,
   6213     155368, 155427, 31974, 155484, 31989, 32003, 17094, 32018, 32030, 155616,
   6214     155604, {f: 2, c: 32061}, 32064, 32071, 155660, 155643, 17110, 32090,
   6215     32106, 32112, 17117, 32127, 155671, 32136, 32151, 155744, 32157, 32167,
   6216     32170, 32182, 32192, 32215, 32217, 32230, 17154, 155885, 64088, 32272,
   6217     32279, 32285, 32295, 32300, 32325, 32373, 32382, {f: 2, c: 32390}, 17195,
   6218     32410, 17219, 32572, 32571, 32574, 32579, 13505, 156272, 156294,
   6219     {f: 2, c: 32611}, 32621, {f: 2, c: 32637}, 32656, 20859, 146702, 32662,
   6220     32668, 32685, 156674, 32707, 32719, 32739, 32754, 32778, 32776, 32790,
   6221     32812, 32816, 32835, 32870, 32891, 32921, 32924, 32932, 32935, 32952,
   6222     157310, 32965, 32981, 32998, 33037, 33013, 33019, 17390, 33077, 33054,
   6223     17392, 33060, 33063, 33068, 157469, 33085, 17416, 33129, 17431, 17436,
   6224     33157, 17442, 33176, 33202, 33217, 33219, 33238, 33243, 157917, 33252,
   6225     157930, 33260, 33277, 33279, 158063, 33284, 158173, 33305, 33314, 158238,
   6226     33340, 33353, 33349, 158296, 17526, 17530, 33367, 158348, 33372, 33379,
   6227     158391, 17553, 33405, 33407, 33411, 33418, 33427, {f: 2, c: 33447}, 33458,
   6228     33460, 33466, 33468, 33506, 33512, 33527, {f: 2, c: 33543}, 33548, 33620,
   6229     33563, 33565, 33584, 33596, 33604, 33623, 17598, 17620, 17587,
   6230     {f: 2, c: 33684}, 33691, 33693, 33737, 33744, 33748, 33757, 33765, 33785,
   6231     33813, 158835, 33815, 33849, 33871, {f: 2, c: 33873}, {f: 2, c: 33881},
   6232     33884, 158941, 33893, 33912, 33916, 33921, 17677, 33943, 33958, 33982,
   6233     17672, {f: 2, c: 33998}, 34003, 159333, 34023, 34026, 34031, 34033, 34042,
   6234     34075, {f: 2, c: 34084}, 34091, 34127, 34159, 17731, 34129,
   6235     {f: 2, c: 34145}, 159636, 34171, 34173, 34175, 34177, 34182, 34195, 34205,
   6236     34207, 159736, {f: 2, c: 159734}, 34236, 34247, 34250, {f: 2, c: 34264},
   6237     34271, 34273, 34278, 34294, 34304, 34321, 34334, 34337, 34340, 34343,
   6238     160013, 34361, 34364, 160057, 34368, 34387, 34390, 34423, 34439, 34441,
   6239     {f: 2, c: 34460}, 34481, 34483, 34497, 34499, 34513, 34517, 34519, 34531,
   6240     34534, 17848, 34565, 34567, 34574, 34576, 34591, 34593, 34595, 34609,
   6241     34618, 34624, 34627, 34641, 34648, {f: 2, c: 34660}, 34674, 34684, 160731,
   6242     160730, 34727, 34697, 34699, 34707, 34720, 160766, 17893, 34750, 160784,
   6243     34753, 34766, 34783, 160841, 34787, {f: 2, c: 34789}, 34794, 34835, 34856,
   6244     34862, 34866, 34876, 17935, 34890, 34904, 161301, 161300, 34921, 161329,
   6245     34927, 34976, 35004, 35008, 161427, 35025, 35027, 17985, 35073, 161550,
   6246     35127, 161571, 35138, 35141, 35145, 161618, 35170, 35209, 35216, 35231,
   6247     35248, 35255, 35288, 35307, 18081, 35315, 35325, 35327, 18095, 35345,
   6248     35348, 162181, 35361, 35381, 35390, 35397, 35405, 35416, 35502, 35472,
   6249     35511, 35543, 35580, 162436, 35594, 35589, 35597, 35612, 35629, 18188,
   6250     35665, 35678, 35702, 35713, 35723, {f: 2, c: 35732}, 35897, 162739, 35901,
   6251     162750, 162759, 35909, 35919, 35927, 35945, 35949, 163000, 35987, 35986,
   6252     35993, 18276, 35995, 36054, 36053, 163232, 36081, 163344, 36105, 36110,
   6253     36296, 36313, 36364, 18429, 36349, 36358, 163978, 36372, 36374,
   6254     {f: 2, c: 36385}, 36391, 164027, 18454, 36406, 36409, 36436, 36450, 36461,
   6255     36463, 36504, 36510, 36533, 36539, 164482, 18510, 164595, 36608, 36616,
   6256     36651, 36672, 36682, 36696, 164876, 36772, 36788, 164949, 36801, 36806,
   6257     64036, 36810, 36813, 36819, 36821, 36849, 36853, 36859, 36876, 36919,
   6258     165227, 36931, 36957, {f: 2, c: 165320}, 36997, 37004, 37008, 37025, 18613,
   6259     37040, 37046, 37059, 37064, 165591, 37084, 37087, 165626, 37110, 37106,
   6260     37120, 37099, {f: 2, c: 37118}, 37124, 37126, 37144, 37150, 37175, 37177,
   6261     {f: 2, c: 37190}, 37207, 37209, 37236, 37241, 37253, 37299, 37302,
   6262     {f: 2, c: 37315}, 166217, 166214, 37356, 37377, {f: 2, c: 37398}, 166251,
   6263     37442, 37450, 37462, 37473, 37477, 37480, 166280, {f: 2, c: 37500}, 37503,
   6264     37513, 37517, 37527, 37529, 37535, 37547, {f: 2, c: 166330}, 37554,
   6265     {f: 2, c: 37567}, 37574, 37582, 37605, 37649, 166430, 166441, 37623, 37673,
   6266     166513, 166467, 37713, 37722, 37739, 37745, 37747, 37793, 166553, 166605,
   6267     37768, 37771, 37775, 37790, 37877, 166628, 166621, 37873, 37831, 37852,
   6268     37863, 37897, {f: 2, c: 37910}, 37883, 37938, 37947, 166849, 166895, 37997,
   6269     37999, 38265, 38278, {f: 2, c: 38284}, 167184, 167281, 38344, 167419,
   6270     167455, 38444, {f: 2, c: 38451}, 167478, 38460, 38497, 167561, 38530,
   6271     167659, 38554, 167730, 18919, 38579, 38586, 38589, 18938, 167928, 38616,
   6272     38618, 38621, 18948, 38676, 38691, 18985, 38710, 38721, 38727, 38743,
   6273     38747, 38762, 168608, 168625, 38806, 38814, {f: 2, c: 38833}, 38846, 38860,
   6274     38865, 38868, 38872, 38881, 38897, 38916, 38925, 38932, 38934, 19132,
   6275     169104, {f: 2, c: 38962}, 38949, 38983, 39014, 39083, 39085, 39088, 169423,
   6276     39095, {f: 2, c: 39099}, 39106, 39111, 39115, 39137, 39139, 39146,
   6277     {f: 2, c: 39152}, 39155, 39176, 19259, 169712, {f: 2, c: 39190}, 169753,
   6278     {f: 3, c: 39194}, 169808, 39217, {f: 3, c: 39226}, 39233, 39238, 39246,
   6279     39264, 39331, 39334, 39357, 39359, 39363, 39380, 39385, 39390, 170182,
   6280     39408, 39417, 39420, 39434, 39441, 39450, 39456, 39473, 39492, 39500,
   6281     39512, 19394, 39599, 19402, 39607, 19410, 39609, 170610, 39622, 39632,
   6282     39634, 39637, 39648, 39653, 39657, 39692, 39696, 39698, 39702, 39708,
   6283     39723, 39741, 19488, 39755, 39779, 39781, {f: 2, c: 39787},
   6284     {f: 2, c: 39798}, 39846, 39852, 171483, 39858, 39864, 39870, 39923, 39896,
   6285     39901, 39914, 39919, 39918, 171541, 171658, 171593, 39958,
   6286     {f: 3, c: 39960}, 39965, 39970, 39977, 171716, 39985, 39991, 40005, 40028,
   6287     171753, {f: 2, c: 40009}, 171739, 40020, 40024, 40027, 40029, 40031,
   6288     {f: 3, c: 40041}, {f: 2, c: 40045}, 40050, 40053, 40058, 40166, 40178,
   6289     40203, [171982, 171991], 40209, {f: 2, c: 40215}, 172079, 19652, 172058,
   6290     40242, 19665, 40266, 40287, 40290, 172281, 172162, 40307, {f: 2, c: 40310},
   6291     40324, 40345, 40353, 40383, 40373, 40377, 40381, 40393, 40410, 40416,
   6292     40419, 19719, 40458, 40450, 40461, 40476, 40571, 139800, 40576, 40581,
   6293     40603, 172940, 40637, 173111, 40671, 40703, 40706, 19831, 40707, 40762,
   6294     40765, 40774, 40787, 40789, 40792, 173553, 40797, 173570, 40809, 40813,
   6295     40816, 173746, 11948, 13844, 14509, 15820, 16348, 17854, 17936, 19326,
   6296     19512, 19681, 19980, {f: 2, c: 20003}, 20089, 20211, 20236, 20249, 20267,
   6297     20270, 20273, 20356, 20382, 20407, 20484, 20492, 20556, 20575, 20578,
   6298     20599, 20622, 20638, 20642, 20675, 20712, 20721, 20734, 20743,
   6299     {f: 3, c: 20748}, 20787, 20792, 20852, 20868, 20920, 20922, 20936, 20943,
   6300     20945, {f: 2, c: 20947}, 20952, 20959, 20997, 21030, 21032, 21035,
   6301     {f: 2, c: 21041}, 21045, 21052, 21082, 21088, 21102, {f: 2, c: 21112},
   6302     21130, 21132, 21217, 21225, 21233, 21251, 21265, 21279, 21293, 21298,
   6303     21309, 21349, 21357, 21369, 21374, 21396, 21401, 21418, 21423, 21434,
   6304     21441, {f: 2, c: 21444}, 21472, 21523, 21546, 21553, {f: 2, c: 21556},
   6305     21580, 21671, 21674, 21681, 21691, 21710, 21738, 21756, 21765, 21768,
   6306     21781, 21799, 21802, 21814, 21841, 21862, 21903, 21906, 21908, 21924,
   6307     21938, 21955, 21958, 21971, 21979, 21996, 21998, 22001, 22006, 22008,
   6308     22021, 22029, {f: 2, c: 22033}, 22060, 22069, 22073, 22093, 22100, 22149,
   6309     22175, 22182, 22199, 22220, 22223, 22233, 22241, 22251, 22253, 22257,
   6310     22279, 22284, {f: 2, c: 22298}, 22301, 22316, 22318, {f: 2, c: 22333},
   6311     22367, 22379, 22381, 22394, 22403, 22423, 22446, 22485, 22503, 22541,
   6312     22566, 22605, 22607, 22623, 22637, 22655, 22657, 22680, 22716, 22815,
   6313     22819, 22873, 22905, 22935, 22959, 22963, 23007, 23025, 23032, 23218,
   6314     23224, 23274, 23286, 23323, 23325, 23329, 23352, 23479, 23511, 23520,
   6315     23583, 23594, 23596, 23606, 23641, 23644, 23661, 23773, 23809, 23860,
   6316     23869, 23897, 23934, 23939, 24007, 24057, 24104, 24114, 24117, 24155,
   6317     24168, 24170, 24183, 24192, 24203, 24243, 24253, 24273, {f: 2, c: 24276},
   6318     24397, 24492, 24554, 24583, 24649, 24660, 24679, 24763, 24772, 24829,
   6319     24842, 24854, 24874, 24886, 24926, 24932, 24955, 24957, 24959, 24989,
   6320     25016, 25052, 25058, 25061, 25064, 25092, 25095, 25137, 25145, 25149,
   6321     25210, 25232, 25256, 25306, 25332, 25366, 25386, 25398, 25414, 25419,
   6322     25427, 25457, 25461, 25471, 25474, 25482, {f: 2, c: 25518}, 25578,
   6323     {f: 2, c: 25592}, 25618, 25624, 25632, 25636, 25642, 25653, 25661, 25663,
   6324     25682, 25695, 25716, 25744, {f: 2, c: 25752}, 25772, 25779, 25837, 25840,
   6325     25883, 25887, 25902, 25929, 25952, 26002, 26005, 26036, 26046, 26056,
   6326     26062, 26064, 26079, 26238, {f: 2, c: 26251}, 26291, 26304, 26319, 26405,
   6327     26421, 26453, 26496, 26511, 26513, 26532, 26545, 26549, 26558, 26664,
   6328     26758, 26859, 26869, 26903, 26931, 26936, 26971, 26981, 27048, 27051,
   6329     27055, 27109, 27121, 27210, 27221, 27239, 27249, 27311, {f: 2, c: 27336},
   6330     27395, 27451, 27455, {f: 2, c: 27517}, 27568, 27639, 27641, 27652, 27657,
   6331     27661, 27692, 27722, 27730, 27732, 27769, 27820, 27828, 27858, 28001,
   6332     28028, 28089, 28144, 28229, 28275, 28283, 28285, 28297, 28348,
   6333     {f: 2, c: 28378}, 28454, 28457, 28464, 28551, 28573, 28590, 28599, 28685,
   6334     28704, 28745, 28824, 28848, {f: 2, c: 28885}, 28997, 29106, 29172, 29207,
   6335     29215, 29251, {f: 2, c: 29263}, 29274, 29280, 29288, 29303, 29316, 29385,
   6336     29413, 29428, 29442, 29451, 29470, 29474, {f: 2, c: 29498}, 29517, 29528,
   6337     29543, 29810, 29871, 29919, 29924, 29940, 29947, 29974, 29985, 30015,
   6338     30046, 30105, 30116, 30145, 30148, 30156, 30167, 30172, 30177, 30191,
   6339     30212, 30220, 30237, 30258, 30264, 30277, 30282, 30303, 30381, 30397,
   6340     30425, 30443, 30448, 30457, 30464, 30478, 30498, 30504, 30511, 30521,
   6341     30526, 30533, 30538, 30543, 30558, 30564, 30567, 30572, 30596,
   6342     {f: 2, c: 30604}, 30614, 30631, 30639, 30647, 30654, 30665, 30673, 30681,
   6343     30705, 30775, 30812, 30846, 30872, 30881, 30897, 30899, 30921, 30931,
   6344     30988, 31007, {f: 2, c: 31015}, 31039, 31042, 31060, 31083, 31100, 31147,
   6345     31172, 31210, 31234, 31244, 31280, 31290, 31300, 31360, 31366, 31380,
   6346     31413, 31421, 31486, 31531, 31607, 31648, 31660, 31664, 31720, 31730,
   6347     31736, 31740, 31742, 31753, 31784, 31791, 31810, {f: 2, c: 31826},
   6348     {f: 3, c: 31835}, 31858, 31869, 31879, 31902, 31930, 31943, 31955, 31962,
   6349     32060, 32077, 32130, 32133, 32141, 32145, 32158, 32179, 32185, 32208,
   6350     32229, {f: 2, c: 32245}, 32303, 32310, 32324, 32367, 32376, 32385, 32573,
   6351     32603, 32605, 32613, 32625, {f: 2, c: 32639}, 32651, 32674,
   6352     {f: 3, c: 32765}, 32775, 32781, 32798, 32825, 32904, 32910, 32975, 32980,
   6353     33005, 33008, 33015, 33018, 33022, 33027, 33047, 33072, 33111, 33135,
   6354     33139, 33163, 33168, 33179, 33182, 33227, 33237, {f: 2, c: 33245}, 33249,
   6355     33263, 33270, 33280, 33291, {f: 2, c: 33299}, 33306, 33338, 33348, 33389,
   6356     33412, 33417, 33425, 33450, 33456, 33488, 33514, 33519, 33526, 33622,
   6357     33656, 33784, 33788, 33880, 33939, 33969, 33981, 34043, 34118, 34134,
   6358     34141, 34181, 34200, 34370, 34374, 34496, 34580, 34594, 34606, 34617,
   6359     34653, 34683, 34700, 34702, {f: 2, c: 34711}, 34718, 34723, 34734, 34751,
   6360     34761, 34778, 34840, 34843, 34861, 34874, 34885, 34891, 34894, 34901,
   6361     34906, 34926, {f: 3, c: 34970}, 35021, 35040, 35055, {f: 2, c: 35086},
   6362     35110, 35125, 35162, 35164, 35179, 35184, 35196, 35237, 35253, 35260,
   6363     35285, 35401, 35415, 35431, 35454, 35462, 35478, 35510, 35529, 35537,
   6364     35549, 35564, 35573, 35590, 35599, 35601, 35653, 35666, 35693, 35704,
   6365     35708, 35710, 35717, 35743, 35915, 35923, 35963, 36026, 36037, 36041,
   6366     36050, 36076, 36085, 36087, 36097, 36099, 36119, 36124, 36206, 36241,
   6367     36255, 36267, 36274, 36309, 36327, {f: 2, c: 36337}, 36340, 36353, 36363,
   6368     36390, 36401, {f: 2, c: 36416}, 36429, 36431, 36444, 36449, 36457, 36465,
   6369     36469, 36471, 36489, 36496, 36501, 36506, 36519, 36521, 36525, 36584,
   6370     36592, 36615, 36632, 36645, 36647, 36652, 36661, 36666, 36675, 36679,
   6371     36689, 36693, {f: 3, c: 36768}, 36773, 36868, 36891, 36911, 36940, 36955,
   6372     36976, 36980, 36985, 37003, 37016, 37024, 37042, 37053, 37065, 37104,
   6373     37125, 37157, 37210, 37223, 37242, 37258, 37265, 37269, 37296, 37307,
   6374     37309, 37314, 37317, 37376, 37385, 37411, 37494, 37518, 37551,
   6375     {f: 2, c: 37563}, 37569, 37571, 37573, 37576, 37652, 37683, 37686, 37720,
   6376     37759, 37762, 37770, 37819, 37836, 37862, 37881, 37890, {f: 2, c: 37901},
   6377     37934, 37964, 38280, 38305, 38335, 38342, 38345, {f: 2, c: 38353}, 38368,
   6378     38372, 38374, 38436, 38449, 38456, 38461, 38484, 38516, 38523, 38527,
   6379     38529, 38531, 38537, 38550, 38574, 38659, 38683, {f: 2, c: 38689}, 38696,
   6380     38705, 38759, 38774, 38781, 38783, 38809, 38815, 38828, 38841, 38861,
   6381     38880, 38895, 38919, 38950, 38958, {f: 2, c: 39010}, 39092, 39109, 39170,
   6382     39185, 39189, 39221, 39240, 39252, 39262, 39393, 39436, 39440, 39459,
   6383     39489, 39505, {f: 2, c: 39613}, 39681, 39689, 39691, {f: 2, c: 39693},
   6384     39705, 39733, 39752, 39765, 39784, 39808, 39814, 39824, 39837, 39856,
   6385     39871, 39880, 39935, 39938, 39964, 39989, 40004, 40022, 40033, 40040,
   6386     40240, 40253, 40298, 40315, 40421, 40425, 40435, 40570, {f: 3, c: 40578},
   6387     40624, 40676, 40688, 40690, 40713, 40719, 40724, 40731, 40738, 40742,
   6388     {f: 2, c: 40746}, 40756, 40794, 40815, 40862, 40869, 131317, 151044,
   6389     151538, 163187, 194581, 194630, 194713, 194726, 194789, 195038, 13790,
   6390     {s: 4}, 172722, 0, 0, 131416, {s: 4}, 132529, 0, 0, 132844, {s: 6}, 134488,
   6391     {s: 21}, 154060, {s: 9}, 14756, 14776, 142914, 0, 0, 14940, 0, 0, 143339,
   6392     0, 0, 162228, 0, 15044, 15051, {s: 5}, 14981, {s: 8}, 15347, 27384, {s: 5},
   6393     15665, {s: 9}, 147531, 0, 15936, 14497, {s: 34}, 158878, {s: 12}, 18207,
   6394     162876, {s: 4}, 18462, {s: 71}, 39709, 39724, 20482, 20958, 21255, 23532,
   6395     63784, 26142, 63785, 28746, 64021, 21857, 27706, 31328, 156492, 34819,
   6396     38315, 38741, 171581, 173594],
   6397   'Adobe-Korea1': [{f: 95, c: 32}, 8361, 8208, 169, 0, 0, [12288, 12644],
   6398     {f: 2, c: 12289}, 12539, 8229, [8230, 8943], 168, 12291, {f: 2, c: 8211},
   6399     8214, 65340, 65374, {f: 2, c: 8216}, {f: 2, c: 8220}, {f: 2, c: 12308},
   6400     {f: 10, c: 12296}, 177, 215, 247, 8800, {f: 2, c: 8804}, 8734, 8756, 176,
   6401     {f: 2, c: 8242}, 8451, 8491, {f: 2, c: 65504}, 65509, 9794, 9792, 8736,
   6402     8869, 8978, 8706, 8711, 8801, 8786, 167, 8251, 9734, 9733, 9675, 9679,
   6403     9678, 9671, 9670, 9633, 9632, 9651, 9650, 9661, 9660, 8594,
   6404     {f: 2, c: 8592}, {f: 2, c: 8595}, 12307, 171, 187, 8730, 8765, 8733, 8757,
   6405     {f: 2, c: 8747}, 8712, 8715, {f: 2, c: 8838}, {f: 2, c: 8834}, 8746, 8745,
   6406     {f: 2, c: 8743}, 65506, 8658, 8660, 8704, 8707, 180, 732, 711, 728, 733,
   6407     730, 729, 184, 731, 161, 191, 8758, 8750, 8721, 8719, 164, 8457, 8240,
   6408     9665, 9664, 9655, 9654, 9828, {f: 2, c: 9824}, 9829, 9831, 9827, 9673,
   6409     9672, 9635, {f: 2, c: 9680}, 9618, {f: 2, c: 9636}, 9640, 9639, 9638, 9641,
   6410     9832, 9743, 9742, 9756, 9758, 182, {f: 2, c: 8224}, 8597, 8599, 8601, 8598,
   6411     8600, 9837, {f: 2, c: 9833}, 9836, 12927, 12828, 8470, 13255, 8482, 13250,
   6412     13272, 8481, {f: 59, c: 65281}, 65510, {f: 33, c: 65341}, 65507,
   6413     {f: 51, c: 12593}, {f: 42, c: 12645}, {f: 10, c: 8560}, {f: 10, c: 8544},
   6414     {f: 17, c: 913}, {f: 7, c: 931}, {f: 17, c: 945}, {f: 7, c: 963}, 9472,
   6415     9474, 9484, 9488, 9496, 9492, 9500, 9516, 9508, 9524, 9532, 9473, 9475,
   6416     9487, 9491, 9499, 9495, 9507, 9523, 9515, 9531, 9547, 9504, 9519, 9512,
   6417     9527, 9535, 9501, 9520, 9509, 9528, 9538, 9490, 9489, 9498, 9497, 9494,
   6418     9493, 9486, 9485, {f: 2, c: 9502}, {f: 2, c: 9505}, {f: 2, c: 9510},
   6419     {f: 2, c: 9513}, {f: 2, c: 9517}, {f: 2, c: 9521}, {f: 2, c: 9525},
   6420     {f: 2, c: 9529}, {f: 2, c: 9533}, {f: 2, c: 9536}, {f: 8, c: 9539},
   6421     {f: 3, c: 13205}, 8467, 13208, 13252, {f: 4, c: 13219}, {f: 10, c: 13209},
   6422     13258, {f: 3, c: 13197}, 13263, {f: 2, c: 13192}, 13256, {f: 2, c: 13223},
   6423     {f: 10, c: 13232}, {f: 5, c: 13184}, {f: 6, c: 13242}, {f: 5, c: 13200},
   6424     8486, {f: 2, c: 13248}, {f: 3, c: 13194}, 13270, 13253, {f: 3, c: 13229},
   6425     13275, {f: 4, c: 13225}, 13277, 13264, 13267, 13251, 13257, 13276, 13254,
   6426     198, 208, 170, 294, 306, 319, 321, 216, 338, 186, 222, 358, 330,
   6427     {f: 28, c: 12896}, {f: 26, c: 9424}, {f: 15, c: 9312}, 189,
   6428     {f: 2, c: 8531}, 188, 190, {f: 4, c: 8539}, 230, 273, 240, 295, 305, 307,
   6429     312, 320, 322, 248, 339, 223, 254, 359, 331, 329, {f: 28, c: 12800},
   6430     {f: 26, c: 9372}, {f: 15, c: 9332}, 185, {f: 2, c: 178}, 8308, 8319,
   6431     {f: 4, c: 8321}, {f: 83, c: 12353}, {f: 86, c: 12449}, {f: 6, c: 1040},
   6432     1025, {f: 32, c: 1046}, 1105, {f: 26, c: 1078}, {f: 2, c: 44032}, 44036,
   6433     {f: 4, c: 44039}, {f: 8, c: 44048}, {f: 5, c: 44057}, 44064, 44068,
   6434     {f: 2, c: 44076}, {f: 3, c: 44079}, {f: 2, c: 44088}, 44092, 44096, 44107,
   6435     44109, 44116, 44120, 44124, {f: 2, c: 44144}, 44148, {f: 2, c: 44151},
   6436     44154, {f: 2, c: 44160}, {f: 4, c: 44163}, {f: 4, c: 44169}, 44176, 44180,
   6437     {f: 2, c: 44188}, {f: 3, c: 44191}, {f: 3, c: 44200}, 44204,
   6438     {f: 2, c: 44207}, {f: 2, c: 44216}, {f: 3, c: 44219}, 44225, 44228, 44232,
   6439     44236, 44245, 44247, {f: 2, c: 44256}, 44260, {f: 2, c: 44263}, 44266,
   6440     44268, {f: 3, c: 44271}, 44275, {f: 2, c: 44277}, {f: 2, c: 44284}, 44288,
   6441     44292, 44294, {f: 2, c: 44300}, 44303, 44305, 44312, 44316, 44320, 44329,
   6442     {f: 2, c: 44332}, {f: 2, c: 44340}, 44344, 44348, {f: 2, c: 44356}, 44359,
   6443     44361, 44368, 44372, 44376, 44385, 44387, {f: 2, c: 44396}, 44400,
   6444     {f: 4, c: 44403}, {f: 3, c: 44411}, 44415, {f: 2, c: 44417},
   6445     {f: 2, c: 44424}, 44428, 44432, {f: 2, c: 44444}, 44452, 44471,
   6446     {f: 2, c: 44480}, 44484, 44488, {f: 2, c: 44496}, 44499, 44508, 44512,
   6447     44516, {f: 2, c: 44536}, 44540, {f: 3, c: 44543}, {f: 2, c: 44552}, 44555,
   6448     44557, 44564, {f: 2, c: 44592}, 44596, {f: 2, c: 44599}, 44602,
   6449     {f: 2, c: 44608}, 44611, {f: 2, c: 44613}, 44618, {f: 3, c: 44620}, 44624,
   6450     44628, 44630, {f: 2, c: 44636}, {f: 3, c: 44639}, 44645, {f: 2, c: 44648},
   6451     44652, 44656, {f: 2, c: 44664}, {f: 3, c: 44667}, {f: 2, c: 44676}, 44684,
   6452     {f: 3, c: 44732}, 44736, 44740, {f: 2, c: 44748}, {f: 3, c: 44751},
   6453     {f: 2, c: 44760}, 44764, 44776, 44779, 44781, 44788, 44792, 44796,
   6454     {f: 2, c: 44807}, 44813, 44816, {f: 2, c: 44844}, 44848, 44850, 44852,
   6455     {f: 2, c: 44860}, 44863, {f: 3, c: 44865}, {f: 2, c: 44872}, 44880,
   6456     {f: 2, c: 44892}, {f: 2, c: 44900}, 44921, 44928, 44932, 44936,
   6457     {f: 2, c: 44944}, 44949, 44956, {f: 2, c: 44984}, 44988, 44992,
   6458     {f: 3, c: 44999}, 45003, {f: 2, c: 45005}, 45012, 45020, {f: 2, c: 45032},
   6459     {f: 2, c: 45040}, 45044, 45048, {f: 2, c: 45056}, 45060, 45068, 45072,
   6460     45076, {f: 2, c: 45084}, 45096, {f: 2, c: 45124}, 45128, 45130, 45132,
   6461     45134, {f: 3, c: 45139}, 45143, 45145, 45149, {f: 2, c: 45180}, 45184,
   6462     45188, {f: 2, c: 45196}, 45199, 45201, {f: 3, c: 45208}, 45212,
   6463     {f: 4, c: 45215}, {f: 2, c: 45224}, {f: 5, c: 45227}, 45233,
   6464     {f: 3, c: 45235}, 45240, 45244, {f: 2, c: 45252}, {f: 3, c: 45255},
   6465     {f: 2, c: 45264}, 45268, 45272, 45280, 45285, {f: 2, c: 45320},
   6466     {f: 2, c: 45323}, 45328, {f: 2, c: 45330}, {f: 2, c: 45336},
   6467     {f: 3, c: 45339}, {f: 3, c: 45347}, 45352, 45356, {f: 2, c: 45364},
   6468     {f: 3, c: 45367}, {f: 2, c: 45376}, 45380, 45384, {f: 2, c: 45392},
   6469     {f: 2, c: 45396}, 45400, 45404, 45408, {f: 2, c: 45432}, 45436, 45440,
   6470     45442, {f: 2, c: 45448}, 45451, 45453, {f: 3, c: 45458}, 45464, 45468,
   6471     45480, 45516, 45520, 45524, {f: 2, c: 45532}, 45535, {f: 2, c: 45544},
   6472     45548, 45552, 45561, 45563, 45565, {f: 2, c: 45572}, 45576,
   6473     {f: 2, c: 45579}, {f: 2, c: 45588}, 45591, 45593, 45600, 45620, 45628,
   6474     45656, 45660, 45664, {f: 2, c: 45672}, {f: 2, c: 45684}, 45692,
   6475     {f: 2, c: 45700}, 45705, {f: 2, c: 45712}, 45716, {f: 3, c: 45720},
   6476     {f: 2, c: 45728}, 45731, {f: 2, c: 45733}, 45738, 45740, 45744, 45748,
   6477     {f: 2, c: 45768}, 45772, 45776, 45778, {f: 2, c: 45784}, 45787, 45789,
   6478     45794, {f: 3, c: 45796}, 45800, {f: 5, c: 45803}, {f: 3, c: 45811},
   6479     {f: 5, c: 45815}, {f: 3, c: 45823}, 45828, 45832, {f: 2, c: 45840},
   6480     {f: 3, c: 45843}, 45852, {f: 3, c: 45908}, 45912, {f: 2, c: 45915},
   6481     {f: 2, c: 45918}, {f: 2, c: 45924}, 45927, 45929, 45931, 45934,
   6482     {f: 2, c: 45936}, 45940, 45944, {f: 2, c: 45952}, {f: 3, c: 45955}, 45964,
   6483     45968, 45972, {f: 2, c: 45984}, 45992, 45996, {f: 2, c: 46020}, 46024,
   6484     {f: 2, c: 46027}, 46030, 46032, {f: 2, c: 46036}, 46039, 46041, 46043,
   6485     46045, 46048, 46052, 46056, 46076, 46096, 46104, 46108, 46112,
   6486     {f: 2, c: 46120}, 46123, 46132, {f: 2, c: 46160}, 46164, 46168,
   6487     {f: 2, c: 46176}, 46179, 46181, 46188, 46208, 46216, 46237, 46244, 46248,
   6488     46252, 46261, 46263, 46265, 46272, 46276, 46280, 46288, 46293,
   6489     {f: 2, c: 46300}, 46304, {f: 2, c: 46307}, 46310, {f: 2, c: 46316}, 46319,
   6490     46321, 46328, {f: 2, c: 46356}, 46360, {f: 2, c: 46363}, {f: 2, c: 46372},
   6491     {f: 4, c: 46375}, {f: 2, c: 46384}, 46388, 46392, {f: 2, c: 46400},
   6492     {f: 3, c: 46403}, {f: 3, c: 46411}, 46416, 46420, {f: 2, c: 46428},
   6493     {f: 3, c: 46431}, {f: 2, c: 46496}, 46500, 46504, {f: 2, c: 46506},
   6494     {f: 2, c: 46512}, {f: 3, c: 46515}, {f: 3, c: 46523}, 46528, 46532,
   6495     {f: 2, c: 46540}, {f: 3, c: 46543}, 46552, 46572, {f: 2, c: 46608}, 46612,
   6496     46616, 46629, 46636, 46644, 46664, 46692, 46696, {f: 2, c: 46748}, 46752,
   6497     46756, {f: 2, c: 46763}, 46769, 46804, 46832, 46836, 46840,
   6498     {f: 2, c: 46848}, 46853, {f: 2, c: 46888}, 46892, {f: 2, c: 46895},
   6499     {f: 2, c: 46904}, 46907, 46916, 46920, 46924, {f: 2, c: 46932}, 46944,
   6500     46948, 46952, {f: 2, c: 46960}, 46963, 46965, {f: 2, c: 46972}, 46976,
   6501     46980, {f: 2, c: 46988}, {f: 4, c: 46991}, {f: 4, c: 46998}, 47004, 47008,
   6502     {f: 2, c: 47016}, {f: 3, c: 47019}, {f: 2, c: 47028}, 47032, 47047, 47049,
   6503     {f: 2, c: 47084}, 47088, 47092, {f: 2, c: 47100}, {f: 3, c: 47103},
   6504     {f: 3, c: 47111}, 47116, 47120, {f: 2, c: 47128}, 47131, 47133,
   6505     {f: 2, c: 47140}, 47144, 47148, {f: 2, c: 47156}, {f: 3, c: 47159}, 47168,
   6506     47172, 47185, 47187, {f: 2, c: 47196}, 47200, 47204, {f: 2, c: 47212},
   6507     47215, 47217, 47224, 47228, 47245, 47272, 47280, 47284, 47288,
   6508     {f: 2, c: 47296}, 47299, 47301, 47308, 47312, 47316, 47325, 47327, 47329,
   6509     {f: 2, c: 47336}, 47340, 47344, {f: 2, c: 47352}, 47355, 47357, 47364,
   6510     47384, 47392, {f: 2, c: 47420}, 47424, 47428, 47436, 47439, 47441,
   6511     {f: 2, c: 47448}, 47452, 47456, {f: 2, c: 47464}, 47467, 47469,
   6512     {f: 2, c: 47476}, 47480, 47484, {f: 2, c: 47492}, 47495, {f: 2, c: 47497},
   6513     {f: 2, c: 47501}, {f: 2, c: 47532}, 47536, 47540, {f: 2, c: 47548}, 47551,
   6514     47553, {f: 2, c: 47560}, 47564, {f: 5, c: 47566}, {f: 2, c: 47576}, 47579,
   6515     {f: 2, c: 47581}, 47585, {f: 3, c: 47587}, 47592, 47596, {f: 2, c: 47604},
   6516     {f: 4, c: 47607}, {f: 2, c: 47616}, 47624, 47637, {f: 2, c: 47672}, 47676,
   6517     47680, 47682, {f: 2, c: 47688}, 47691, {f: 2, c: 47693}, {f: 3, c: 47699},
   6518     47704, 47708, {f: 2, c: 47716}, {f: 3, c: 47719}, {f: 2, c: 47728}, 47732,
   6519     47736, {f: 3, c: 47747}, 47751, 47756, {f: 2, c: 47784}, {f: 2, c: 47787},
   6520     47792, 47794, {f: 2, c: 47800}, 47803, 47805, 47812, 47816,
   6521     {f: 2, c: 47832}, 47868, 47872, 47876, 47885, 47887, 47889, 47896, 47900,
   6522     47904, 47913, 47915, {f: 3, c: 47924}, 47928, {f: 4, c: 47931},
   6523     {f: 2, c: 47940}, 47943, 47945, 47949, {f: 2, c: 47951}, 47956, 47960,
   6524     47969, 47971, 47980, 48008, 48012, 48016, 48036, 48040, 48044, 48052,
   6525     48055, 48064, 48068, 48072, 48080, 48083, {f: 2, c: 48120}, 48124,
   6526     {f: 2, c: 48127}, 48130, {f: 2, c: 48136}, {f: 3, c: 48139}, 48143, 48145,
   6527     {f: 5, c: 48148}, {f: 5, c: 48155}, {f: 2, c: 48164}, 48167, 48169, 48173,
   6528     {f: 2, c: 48176}, 48180, 48184, {f: 2, c: 48192}, {f: 3, c: 48195}, 48201,
   6529     {f: 2, c: 48204}, 48208, 48221, {f: 2, c: 48260}, 48264, {f: 2, c: 48267},
   6530     48270, {f: 2, c: 48276}, 48279, {f: 2, c: 48281}, {f: 2, c: 48288}, 48292,
   6531     {f: 2, c: 48295}, {f: 2, c: 48304}, {f: 3, c: 48307}, {f: 2, c: 48316},
   6532     48320, 48324, 48333, {f: 3, c: 48335}, 48341, 48344, 48348,
   6533     {f: 3, c: 48372}, 48376, 48380, {f: 2, c: 48388}, 48391, 48393, 48400,
   6534     48404, 48420, 48428, 48448, {f: 2, c: 48456}, 48460, 48464,
   6535     {f: 2, c: 48472}, 48484, 48488, {f: 2, c: 48512}, 48516, {f: 4, c: 48519},
   6536     {f: 2, c: 48528}, 48531, 48533, {f: 2, c: 48537}, 48540, 48548, 48560,
   6537     48568, {f: 2, c: 48596}, 48600, 48604, 48617, 48624, 48628, 48632, 48640,
   6538     48643, 48645, {f: 2, c: 48652}, 48656, 48660, {f: 2, c: 48668}, 48671,
   6539     {f: 2, c: 48708}, 48712, 48716, 48718, {f: 2, c: 48724}, 48727,
   6540     {f: 3, c: 48729}, {f: 2, c: 48736}, 48740, 48744, 48746, {f: 2, c: 48752},
   6541     {f: 3, c: 48755}, {f: 3, c: 48763}, 48768, 48772, {f: 2, c: 48780},
   6542     {f: 3, c: 48783}, {f: 2, c: 48792}, 48808, {f: 2, c: 48848}, 48852,
   6543     {f: 2, c: 48855}, 48864, {f: 3, c: 48867}, 48876, 48897, {f: 2, c: 48904},
   6544     {f: 2, c: 48920}, {f: 3, c: 48923}, {f: 2, c: 48960}, 48964, 48968,
   6545     {f: 2, c: 48976}, 48981, 49044, 49072, 49093, {f: 2, c: 49100}, 49104,
   6546     49108, 49116, 49119, 49121, 49212, 49233, 49240, 49244, 49248,
   6547     {f: 2, c: 49256}, {f: 2, c: 49296}, 49300, 49304, {f: 2, c: 49312}, 49315,
   6548     49317, {f: 2, c: 49324}, {f: 2, c: 49327}, {f: 4, c: 49331},
   6549     {f: 2, c: 49340}, {f: 3, c: 49343}, 49349, {f: 2, c: 49352}, 49356, 49360,
   6550     {f: 2, c: 49368}, {f: 3, c: 49371}, {f: 2, c: 49380}, 49384, 49388,
   6551     {f: 2, c: 49396}, 49399, 49401, 49408, 49412, 49416, 49424, 49429,
   6552     {f: 5, c: 49436}, {f: 2, c: 49443}, {f: 2, c: 49446}, {f: 2, c: 49452},
   6553     {f: 3, c: 49455}, 49462, {f: 2, c: 49464}, 49468, 49472, {f: 2, c: 49480},
   6554     {f: 3, c: 49483}, {f: 2, c: 49492}, 49496, 49500, {f: 2, c: 49508},
   6555     {f: 3, c: 49511}, 49520, 49524, 49528, 49541, {f: 3, c: 49548}, 49552,
   6556     49556, 49558, {f: 2, c: 49564}, 49567, 49569, 49573, {f: 2, c: 49576},
   6557     49580, 49584, 49597, 49604, 49608, 49612, 49620, {f: 2, c: 49623}, 49632,
   6558     49636, 49640, {f: 2, c: 49648}, 49651, {f: 2, c: 49660}, 49664, 49668,
   6559     {f: 2, c: 49676}, 49679, 49681, {f: 2, c: 49688}, 49692, {f: 2, c: 49695},
   6560     {f: 2, c: 49704}, 49707, 49709, 49711, {f: 2, c: 49713}, 49716, 49736,
   6561     {f: 2, c: 49744}, 49748, 49752, 49760, 49765, {f: 2, c: 49772}, 49776,
   6562     49780, {f: 2, c: 49788}, 49791, 49793, {f: 2, c: 49800}, 49808, 49816,
   6563     49819, 49821, {f: 2, c: 49828}, 49832, {f: 2, c: 49836}, {f: 2, c: 49844},
   6564     49847, 49849, {f: 2, c: 49884}, 49888, {f: 2, c: 49891}, {f: 3, c: 49899},
   6565     49903, 49905, 49910, {f: 2, c: 49912}, {f: 2, c: 49915}, 49920,
   6566     {f: 2, c: 49928}, {f: 2, c: 49932}, {f: 3, c: 49939}, 49944, 49948,
   6567     {f: 2, c: 49956}, {f: 2, c: 49960}, 49989, {f: 2, c: 50024}, 50028, 50032,
   6568     50034, {f: 2, c: 50040}, {f: 2, c: 50044}, 50052, 50056, 50060, 50112,
   6569     {f: 2, c: 50136}, 50140, {f: 2, c: 50143}, 50146, {f: 2, c: 50152}, 50157,
   6570     {f: 2, c: 50164}, 50168, 50184, 50192, 50212, 50220, 50224, 50228,
   6571     {f: 2, c: 50236}, 50248, {f: 2, c: 50276}, 50280, 50284, {f: 2, c: 50292},
   6572     50297, 50304, 50324, 50332, 50360, 50364, 50409, {f: 2, c: 50416}, 50420,
   6573     50424, 50426, {f: 3, c: 50431}, 50444, 50448, 50452, 50460,
   6574     {f: 2, c: 50472}, 50476, 50480, {f: 2, c: 50488}, 50491, 50493,
   6575     {f: 2, c: 50500}, {f: 3, c: 50504}, {f: 3, c: 50508}, {f: 3, c: 50515},
   6576     {f: 3, c: 50519}, {f: 2, c: 50525}, {f: 2, c: 50528}, 50532, 50536,
   6577     {f: 2, c: 50544}, {f: 3, c: 50547}, {f: 2, c: 50556}, 50560, 50564, 50567,
   6578     {f: 2, c: 50572}, 50575, 50577, 50581, {f: 2, c: 50583}, 50588, 50592,
   6579     50601, {f: 2, c: 50612}, {f: 2, c: 50616}, {f: 4, c: 50619},
   6580     {f: 7, c: 50628}, 50636, 50638, {f: 2, c: 50640}, 50644, 50648,
   6581     {f: 2, c: 50656}, 50659, 50661, {f: 3, c: 50668}, 50672, 50676,
   6582     {f: 2, c: 50678}, {f: 6, c: 50684}, {f: 4, c: 50693}, 50700, 50704,
   6583     {f: 2, c: 50712}, {f: 2, c: 50715}, {f: 2, c: 50724}, 50728,
   6584     {f: 3, c: 50732}, 50736, {f: 3, c: 50739}, 50743, 50745, 50747,
   6585     {f: 2, c: 50752}, 50756, 50760, {f: 2, c: 50768}, {f: 3, c: 50771},
   6586     {f: 2, c: 50780}, 50784, 50796, 50799, 50801, {f: 2, c: 50808}, 50812,
   6587     50816, {f: 2, c: 50824}, 50827, 50829, {f: 2, c: 50836}, 50840, 50844,
   6588     {f: 2, c: 50852}, 50855, 50857, {f: 2, c: 50864}, 50868, {f: 3, c: 50872},
   6589     {f: 2, c: 50880}, 50883, 50885, {f: 2, c: 50892}, 50896, 50900,
   6590     {f: 2, c: 50908}, {f: 2, c: 50912}, {f: 2, c: 50920}, 50924, 50928,
   6591     {f: 2, c: 50936}, 50941, {f: 2, c: 50948}, 50952, 50956, {f: 2, c: 50964},
   6592     50967, 50969, {f: 2, c: 50976}, 50980, 50984, {f: 2, c: 50992}, 50995,
   6593     50997, 50999, {f: 2, c: 51004}, 51008, 51012, 51018, {f: 2, c: 51020},
   6594     51023, {f: 8, c: 51025}, 51036, 51040, 51048, 51051, {f: 2, c: 51060},
   6595     51064, {f: 3, c: 51068}, {f: 3, c: 51075}, {f: 4, c: 51079}, 51086,
   6596     {f: 2, c: 51088}, 51092, {f: 3, c: 51094}, 51098, {f: 2, c: 51104},
   6597     {f: 4, c: 51107}, {f: 2, c: 51116}, 51120, 51124, {f: 2, c: 51132},
   6598     {f: 3, c: 51135}, {f: 2, c: 51144}, 51148, 51150, 51152, 51160, 51165,
   6599     51172, 51176, 51180, {f: 2, c: 51200}, 51204, 51208, 51210,
   6600     {f: 2, c: 51216}, 51219, {f: 2, c: 51221}, {f: 2, c: 51228}, 51232, 51236,
   6601     {f: 2, c: 51244}, 51247, 51249, 51256, 51260, 51264, {f: 2, c: 51272},
   6602     {f: 2, c: 51276}, 51284, {f: 2, c: 51312}, 51316, 51320, 51322,
   6603     {f: 2, c: 51328}, 51331, {f: 3, c: 51333}, {f: 3, c: 51339}, 51348, 51357,
   6604     51359, 51361, 51368, {f: 2, c: 51388}, 51396, 51400, 51404,
   6605     {f: 2, c: 51412}, 51415, 51417, {f: 2, c: 51424}, 51428, 51445,
   6606     {f: 2, c: 51452}, 51456, {f: 3, c: 51460}, {f: 2, c: 51468}, 51471, 51473,
   6607     51480, 51500, 51508, {f: 2, c: 51536}, 51540, 51544, {f: 2, c: 51552},
   6608     51555, 51564, 51568, 51572, 51580, {f: 2, c: 51592}, 51596, 51600,
   6609     {f: 2, c: 51608}, 51611, 51613, {f: 2, c: 51648}, 51652, {f: 2, c: 51655},
   6610     51658, {f: 2, c: 51664}, 51667, {f: 2, c: 51669}, {f: 2, c: 51673},
   6611     {f: 2, c: 51676}, 51680, 51682, 51684, 51687, {f: 2, c: 51692},
   6612     {f: 3, c: 51695}, {f: 2, c: 51704}, 51708, 51712, {f: 2, c: 51720},
   6613     {f: 3, c: 51723}, 51732, 51736, 51753, {f: 2, c: 51788}, 51792, 51796,
   6614     {f: 2, c: 51804}, {f: 3, c: 51807}, 51816, 51837, 51844, 51864,
   6615     {f: 2, c: 51900}, 51904, 51908, {f: 2, c: 51916}, 51919, 51921, 51923,
   6616     {f: 2, c: 51928}, 51936, 51948, 51956, 51976, 51984, 51988, 51992,
   6617     {f: 2, c: 52000}, 52033, {f: 2, c: 52040}, 52044, 52048, {f: 2, c: 52056},
   6618     52061, 52068, {f: 2, c: 52088}, 52124, 52152, 52180, 52196, 52199, 52201,
   6619     {f: 2, c: 52236}, 52240, 52244, {f: 2, c: 52252}, {f: 2, c: 52257},
   6620     {f: 3, c: 52263}, 52268, 52270, 52272, {f: 2, c: 52280}, {f: 4, c: 52283},
   6621     {f: 2, c: 52292}, 52296, 52300, {f: 2, c: 52308}, {f: 3, c: 52311}, 52320,
   6622     52324, 52326, 52328, 52336, 52341, {f: 2, c: 52376}, 52380, 52384,
   6623     {f: 2, c: 52392}, {f: 3, c: 52395}, {f: 2, c: 52404}, 52408, 52412,
   6624     {f: 2, c: 52420}, 52423, 52425, 52432, 52436, 52452, 52460, 52464, 52481,
   6625     {f: 2, c: 52488}, 52492, 52496, {f: 2, c: 52504}, 52507, 52509, 52516,
   6626     52520, 52524, 52537, 52572, 52576, 52580, {f: 2, c: 52588}, 52591, 52593,
   6627     52600, 52616, {f: 2, c: 52628}, 52632, 52636, {f: 2, c: 52644}, 52647,
   6628     52649, 52656, 52676, 52684, 52688, 52712, 52716, 52720, {f: 2, c: 52728},
   6629     52731, 52733, 52740, 52744, 52748, 52756, 52761, {f: 2, c: 52768}, 52772,
   6630     52776, {f: 2, c: 52784}, 52787, 52789, {f: 2, c: 52824}, 52828,
   6631     {f: 3, c: 52831}, {f: 2, c: 52840}, 52843, 52845, {f: 2, c: 52852}, 52856,
   6632     52860, {f: 2, c: 52868}, 52871, 52873, {f: 2, c: 52880}, 52884, 52888,
   6633     {f: 2, c: 52896}, {f: 3, c: 52899}, {f: 2, c: 52908}, 52929,
   6634     {f: 2, c: 52964}, 52968, {f: 2, c: 52971}, {f: 2, c: 52980},
   6635     {f: 3, c: 52983}, {f: 2, c: 52992}, 52996, 53000, {f: 2, c: 53008}, 53011,
   6636     53013, 53020, 53024, 53028, {f: 2, c: 53036}, {f: 3, c: 53039}, 53048,
   6637     {f: 2, c: 53076}, 53080, 53084, {f: 2, c: 53092}, 53095, 53097,
   6638     {f: 2, c: 53104}, 53108, 53112, 53120, 53125, 53132, 53153, 53160, 53168,
   6639     53188, {f: 2, c: 53216}, 53220, 53224, {f: 2, c: 53232}, 53235, 53237,
   6640     53244, 53248, 53252, 53265, 53272, 53293, {f: 2, c: 53300}, 53304, 53308,
   6641     {f: 2, c: 53316}, 53319, 53321, 53328, 53332, 53336, 53344,
   6642     {f: 2, c: 53356}, 53360, 53364, {f: 2, c: 53372}, 53377, {f: 2, c: 53412},
   6643     53416, 53420, {f: 2, c: 53428}, 53431, 53433, {f: 2, c: 53440}, 53444,
   6644     {f: 2, c: 53448}, {f: 2, c: 53456}, {f: 3, c: 53459}, {f: 2, c: 53468},
   6645     53472, 53476, {f: 2, c: 53484}, {f: 3, c: 53487}, 53496, 53517,
   6646     {f: 2, c: 53552}, 53556, 53560, 53562, {f: 2, c: 53568}, {f: 3, c: 53571},
   6647     {f: 2, c: 53580}, 53584, 53588, {f: 2, c: 53596}, 53599, 53601, 53608,
   6648     53612, 53628, 53636, 53640, {f: 2, c: 53664}, 53668, 53672,
   6649     {f: 2, c: 53680}, 53683, 53685, 53690, 53692, 53696, 53720, 53748, 53752,
   6650     53767, 53769, 53776, {f: 2, c: 53804}, 53808, 53812, {f: 2, c: 53820},
   6651     53823, 53825, 53832, 53852, 53860, {f: 2, c: 53888}, 53892, 53896,
   6652     {f: 2, c: 53904}, 53909, 53916, 53920, 53924, 53932, 53937,
   6653     {f: 2, c: 53944}, 53948, {f: 2, c: 53951}, 53954, {f: 2, c: 53960}, 53963,
   6654     53972, 53976, 53980, {f: 2, c: 53988}, {f: 2, c: 54000}, 54004, 54008,
   6655     {f: 2, c: 54016}, 54019, 54021, {f: 3, c: 54028}, 54032, 54036, 54038,
   6656     {f: 2, c: 54044}, {f: 3, c: 54047}, 54053, {f: 2, c: 54056}, 54060, 54064,
   6657     {f: 2, c: 54072}, {f: 3, c: 54075}, {f: 2, c: 54084}, {f: 2, c: 54140},
   6658     54144, 54148, {f: 2, c: 54156}, {f: 3, c: 54159}, {f: 2, c: 54168}, 54172,
   6659     54176, {f: 2, c: 54184}, 54187, 54189, 54196, 54200, 54204,
   6660     {f: 2, c: 54212}, {f: 2, c: 54216}, 54224, 54232, 54241, 54243,
   6661     {f: 2, c: 54252}, 54256, 54260, {f: 2, c: 54268}, 54271, 54273, 54280,
   6662     54301, 54336, 54340, 54364, 54368, 54372, 54381, 54383, {f: 2, c: 54392},
   6663     54396, {f: 2, c: 54399}, 54402, {f: 2, c: 54408}, 54411, 54413, 54420,
   6664     54441, 54476, 54480, 54484, 54492, 54495, 54504, 54508, 54512, 54520,
   6665     54523, 54525, 54532, 54536, 54540, {f: 2, c: 54548}, 54551,
   6666     {f: 2, c: 54588}, 54592, 54596, {f: 2, c: 54604}, 54607, 54609,
   6667     {f: 2, c: 54616}, 54620, 54624, 54629, {f: 2, c: 54632}, 54635, 54637,
   6668     {f: 2, c: 54644}, 54648, 54652, {f: 2, c: 54660}, {f: 3, c: 54663}, 54672,
   6669     54693, {f: 2, c: 54728}, 54732, 54736, 54738, {f: 2, c: 54744}, 54747,
   6670     54749, {f: 2, c: 54756}, 54760, 54764, {f: 2, c: 54772}, 54775, 54777,
   6671     {f: 2, c: 54784}, 54788, 54792, {f: 2, c: 54800}, {f: 3, c: 54803}, 54812,
   6672     54816, 54820, 54829, {f: 2, c: 54840}, 54844, 54848, 54853,
   6673     {f: 2, c: 54856}, 54859, 54861, 54865, {f: 2, c: 54868}, 54872, 54876,
   6674     54887, 54889, {f: 2, c: 54896}, 54900, 54915, 54917, {f: 2, c: 54924},
   6675     54928, 54932, 54941, 54943, 54945, 54952, 54956, 54960, 54969, 54971,
   6676     {f: 2, c: 54980}, 54984, 54988, 54993, 54996, 54999, 55001, 55008, 55012,
   6677     55016, 55024, 55029, {f: 2, c: 55036}, 55040, 55044, 55057,
   6678     {f: 2, c: 55064}, 55068, 55072, {f: 2, c: 55080}, 55083, 55085,
   6679     {f: 2, c: 55092}, 55096, 55100, 55108, 55111, 55113, {f: 2, c: 55120},
   6680     55124, {f: 4, c: 55126}, {f: 2, c: 55136}, 55139, 55141, 55145, 55148,
   6681     55152, 55156, {f: 2, c: 55164}, 55169, {f: 2, c: 55176}, 55180, 55184,
   6682     {f: 2, c: 55192}, 55195, 55197, 20285, 20339, 20551, 20729, 21152, 21487,
   6683     21621, 21733, 22025, 23233, 23478, 26247, {f: 2, c: 26550}, 26607, 27468,
   6684     29634, 30146, 31292, 33499, 33540, 34903, 34952, 35382, [36040, 63747],
   6685     36303, 36603, 36838, 39381, 21051, 21364, 21508, 24682, 24932, 27580,
   6686     29647, 33050, 35258, [12179, 35282], 38307, 20355, 21002, 22718, 22904,
   6687     23014, [12082, 24178], 24185, 25031, 25536, 26438, 26604, 26751, 28567,
   6688     30286, 30475, 30965, 31240, 31487, 31777, 32925, [12169, 33390], 33393,
   6689     35563, 38291, 20075, 21917, 26359, 28212, 30883, 31469, 33883, 35088,
   6690     34638, 38824, 21208, 22350, 22570, 23884, 24863, 25022, 25121, 25954,
   6691     26577, 27204, 28187, [12130, 29976], 30131, 30435, 30640, 32058, 37039,
   6692     {f: 2, c: 37969}, 40853, 21283, 23724, 30002, 32987, 37440, 38296, 21083,
   6693     22536, 23004, 23713, 23831, 24247, 24378, 24394, 24951, 27743, 30074,
   6694     30086, 31968, 32115, 32177, 32652, 33108, 33313, 34193, 35137, 35611,
   6695     37628, [38477, 64009], 40007, 20171, 20215, 20491, 20977, 22607, 24887,
   6696     24894, 24936, 25913, 27114, 28433, 30117, 30342, 30422, 31623, 33445,
   6697     33995, 37799, 38283, 21888, 23458, 22353, 31923, 32697, 37301, 20520,
   6698     21435, 23621, 24040, 25298, 25454, 25818, 25831, 28192, 28844, 31067,
   6699     36317, 36382, 36989, 37445, 37624, 20094, 20214, 20581, [12081, 24062],
   6700     24314, 24838, 26967, 33137, 34388, 36423, 37749, 39467, 20062, 20625,
   6701     26480, 26688, 20745, 21133, 21138, 27298, 30652, 37392, 40660, 21163,
   6702     24623, 36850, 20552, 25001, 25581, 25802, 26684, 27268, 28608, 33160,
   6703     35233, 38548, 22533, 29309, [12125, 29356], 29956, 32121, 32365, 32937,
   6704     [12178, 35211, 64010], 35700, 36963, 40273, 25225, 27770, 28500, 32080,
   6705     32570, 35363, 20860, 24906, 31645, 35609, 37463, 37772, 20140, 20435,
   6706     20510, 20670, 20742, 21185, 21197, 21375, 22384, 22659, 24218, 24465,
   6707     24950, 25004, 25806, 25964, 26223, 26299, [26356, 63745], 26775, 28039,
   6708     28805, 28913, 29855, 29861, 29898, 30169, 30828, 30956, 31455, 31478,
   6709     32069, 32147, 32789, 32831, 33051, 33686, 35686, 36629, 36885, 37857,
   6710     38915, 38968, 39514, 39912, 20418, 21843, 22586, [22865, 63753], 23395,
   6711     23622, 24760, 25106, 26690, 26800, 26856, 28330, 30028, 30328, 30926,
   6712     31293, 31995, 32363, 32380, 35336, 35489, 35903, 38542, 40388, 21476,
   6713     21481, 21578, 21617, 22266, 22993, 23396, 23611, 24235, 25335, 25911,
   6714     25925, 25970, 26272, 26543, 27073, 27837, 30204, 30352, 30590, 31295,
   6715     32660, 32771, 32929, 33167, 33510, 33533, 33776, 34241, 34865, 34996,
   6716     35493, 36764, 37678, 38599, 39015, [12220, 39640], [12238, 40723], 21741,
   6717     26011, 26354, 26767, 31296, [12181, 35895], 40288, 22256, 22372, 23825,
   6718     26118, 26801, 26829, 28414, 29736, 34974, 39908, 27752, [12219, 39592],
   6719     20379, 20844, 20849, 21151, 23380, [12079, 24037], 24656, 24685, 25329,
   6720     25511, 25915, 29657, 31354, 34467, 36002, 38799, [20018, 63749], 23521,
   6721     [12093, 25096], 26524, [12128, 29916], 31185, 33747, 35463, 35506, 36328,
   6722     36942, 37707, 38982, [24275, 64011], 27112, 34303, 37101, 20896, 23448,
   6723     23532, 24931, 26874, 27454, 28748, 29743, 29912, 31649, 32592, 33733,
   6724     35264, 36011, 38364, 39208, 21038, 24669, 25324, 36866, 20362, 20809,
   6725     21281, 22745, 24291, 26336, 27960, 28826, 29378, 29654, 31568, 33009,
   6726     37979, 21350, 25499, 32619, 20054, 20608, 22602, 22750, 24618, 24871,
   6727     25296, 27088, 39745, 23439, 32024, 32945, 36703, 20132, 20689, 21676,
   6728     21932, 23308, 23968, 24039, 25898, 25934, 26657, 27211, 29409, 30350,
   6729     30703, 32094, 32761, 33184, 34126, 34527, 36611, 36686, 37066, 39171,
   6730     39509, 39851, 19992, 20037, 20061, 20167, 20465, 20855, 21246, 21312,
   6731     [12061, 21475], [21477, 63750], 21646, 22036, 22389, 22434, 23495, 23943,
   6732     24272, 25084, 25304, 25937, 26552, 26601, 27083, 27472, 27590, 27628,
   6733     27714, 28317, 28792, 29399, 29590, 29699, 30655, 30697, 31350, 32127,
   6734     32777, [12165, 33276], 33285, 33290, 33503, 34914, 35635, 36092, 36544,
   6735     36881, 37041, 37476, 37558, 39378, 39493, 40169, 40407,
   6736     [12244, 40860, 63751, 63752], 22283, 23616, 33738, 38816, 38827, 40628,
   6737     21531, 31384, 32676, 35033, 36557, 37089, 22528, 23624, 25496, 31391,
   6738     23470, [12088, 24339], 31353, 31406, 33422, 36524, 20518, 21048, 21240,
   6739     21367, 22280, 25331, 25458, 27402, 28099, 30519, 21413, 29527, 34152,
   6740     36470, 38357, 26426, 27331, 28528, 35437, 36556, 39243, 26231, 27512,
   6741     36020, [12225, 39740], 21483, 22317, 22862, 25542, 27131, 29674, 30789,
   6742     31418, 31429, 31998, 33909, 35215, 36211, 36917, 38312, 21243, 22343,
   6743     30023, 31584, 33740, 37406, 27224, 20811, 21067, 21127, 25119, 26840,
   6744     26997, 38553, 20677, 21156, 21220, 25027, [12100, 26020], 26681, 27135,
   6745     29822, 31563, 33465, 33771, 35250, 35641, 36817, 39241, 20170, 22935,
   6746     25810, 26129, 27278, 29748, 31105, 31165, 33449, {f: 2, c: 34942}, 35167,
   6747     37670, 20235, 21450, 24613, 25201, 27762, 32026, 32102, 20120, 20834,
   6748     30684, 32943, 20225, 20238, 20854, 20864, 21980, 22120, 22331, 22522,
   6749     22524, 22804, 22855, 22931, 23492, 23696, 23822, [12080, 24049], 24190,
   6750     24524, 25216, 26071, 26083, {f: 2, c: 26398}, 26462, 26827, 26820, 27231,
   6751     27450, 27683, 27773, 27778, 28103, 29592, 29734, 29738, 29826, 29859,
   6752     30072, 30079, 30849, 30959, 31041, {f: 2, c: 31047}, 31098, 31637, 32000,
   6753     32186, 32648, 32774, 32813, 32908, 35352, 35663, [35912, 63744], 36215,
   6754     37665, 37668, 39138, 39249, {f: 2, c: 39438}, 39525, 40594, 32202, 20342,
   6755     21513, 25326, 26708, [12198, 37329, 63754], 21931, 20794, 23068, 25062,
   6756     [25295, 63835], 25343, 37027, [35582, 63837], 26262, 29014, 38627, 25423,
   6757     25466, 21335, 26511, 26976, 28275, 30007, 32013, 34930, 22218, 23064,
   6758     20035, 20839, [22856, 63756], 26608, 32784, [12069, 22899, 63873],
   6759     [24180, 63886], [25754, 63889], [31178, 63893], [24565, 63907], 24684,
   6760     25288, [25467, 63908], [23527, 63839, 63914], 23511, 21162, 22900, 24361,
   6761     [24594, 63840], 29785, 39377, 28611, 33215, 36786, 24817, 33126,
   6762     [23615, 63933], 23273, 35365, [26491, 63944], [32016, 63951], 33021, 23612,
   6763     [27877, 63971], [21311, 63979], [28346, 63980], 22810, [33590, 63998],
   6764     [20025, 63838], 20150, 20294, 21934, 22296, 22727, 24406, 26039, 26086,
   6765     27264, 27573, 28237, 30701, 31471, 31774, 32222, 34507, 34962, 37170,
   6766     37723, 25787, 28606, 29562, 30136, 36948, 21846, 22349, 25018, 25812,
   6767     26311, 28129, 28251, 28525, 28601, 30192, 32835, 33213, 34113, 35203,
   6768     35527, 35674, 37663, 27795, 30035, 31572, 36367, 36957, 21776, 22530,
   6769     22616, 24162, 25095, 25758, 26848, 30070, [31958, 64003], 34739, 40680,
   6770     20195, 22408, 22382, [12068, 22823], 23565, 23729, 24118, 24453, 25140,
   6771     25825, 29619, 33274, 34955, 36024, 38538, 40667, [23429, 64004], 24503,
   6772     24755, 20498, [12049, 20992], 21040, 22294, 22581, 22615, 23566, 23648,
   6773     23798, 23947, [24230, 64001], 24466, 24764, 25361, 25481, 25623, 26691,
   6774     26873, 27330, 28120, 28193, 28372, 28644, 29182, 30428, 30585, 31153,
   6775     31291, 33796, 35241, 36077, 36339, 36424, 36867, 36884, 36947, 37117,
   6776     37709, 38518, 38876, 27602, 28678, 29272, 29346, 29544, 30563, 31167,
   6777     31716, 32411, [35712, 63834], 22697, 24775, 25958, 26109, 26302, 27788,
   6778     28958, 29129, 35930, 38931, 20077, 31361, 20189, 20908, 20941, 21205,
   6779     21516, 24999, 26481, 26704, 26847, [27934, 64005], 28540, 30140, 30643,
   6780     31461, 33012, 33891, 37509, 20828, [12099, 26007], 26460, 26515, 30168,
   6781     31431, 33651, [12182, 35910], 36887, 38957, 23663, 33216, 33434, 36929,
   6782     36975, 37389, 24471, 23965, 27225, 29128, 30331, 31561, 34276, 35588,
   6783     37159, 39472, [21895, 63755], [25078, 63757], [30313, 63758],
   6784     [32645, 63759], [34367, 63760], [34746, 63761], [35064, 63762],
   6785     [37007, 63763], [27931, 63765], [28889, 63766], [29662, 63767], 32097,
   6786     [33853, 63768], [37226, 63769], [39409, 63770], [20098, 63771],
   6787     [21365, 63772], [27396, 63773], 27410, 28734, [29211, 63774],
   6788     [34349, 63775], [40478, 63776], 21068, 36771, [23888, 63777], 25829, 25900,
   6789     27414, [28651, 63778], 31811, 32412, [34253, 63779], [35172, 63780], 35261,
   6790     [25289, 63781], [33240, 63782], [34847, 63783], [24266, 63784],
   6791     [26391, 63785], [28010, 63786], [29436, 63787], 29701, 29807, 34690,
   6792     [37086, 63788], [20358, 63789], 23821, 24480, 33802, [20919, 63790],
   6793     [25504, 63861], [30053, 63862], [20142, 63863], 20486, [20841, 63864],
   6794     [20937, 63865], [26753, 63866], 27153, 31918, 31921, [31975, 63867],
   6795     [33391, 63868], [35538, 63869], 36635, [37327, 63870], 20406, 20791,
   6796     [21237, 63871], [21570, 63872], [24300, 63874], 24942, 25150,
   6797     [26053, 63875], 27354, [28670, 63876], [31018, 63877], 34268, 34851,
   6798     [38317, 63878], 39522, [39530, 63879], [40599, 63880], [40654, 63881],
   6799     [12050, 21147, 63882], [26310, 63883], [27511, 63884], 28701, 31019,
   6800     [36706, 63885], 38722, [24976, 63887], [25088, 63888], 25891,
   6801     [28451, 63890], [29001, 63891], [29833, 63892], [32244, 63894],
   6802     [32879, 63895], [34030, 63897], [36646, 63896], [36899, 63898],
   6803     [37706, 63899], 20925, [21015, 63900], [21155, 63901], 27916,
   6804     [28872, 63903], [35010, 63904], [24265, 63906], 25986, [27566, 63909],
   6805     28610, [31806, 63910], [29557, 63911], [20196, 63912], 20278,
   6806     [22265, 63913], 23738, [23994, 63915], [24604, 63916], [29618, 63917],
   6807     31533, [32666, 63919], 32718, [32838, 63920], 36894, [37428, 63921],
   6808     [38646, 63922], [38728, 63923], [38936, 63924], 40801, [20363, 63925],
   6809     28583, [31150, 63926], [37300, 63927], [38583, 63928], [21214, 63791],
   6810     25736, [25796, 63792], [27347, 63793], 28510, 28696, [29200, 63794],
   6811     [30439, 63795], [12156, 32769, 63796], [34310, 63797], [34396, 63798],
   6812     [36335, 63799], 36613, [38706, 63800], [39791, 63801], [40442, 63802],
   6813     [12228, 40565], [30860, 63803], [31103, 63804], [32160, 63805],
   6814     [33737, 63806], [37636, 63807], [12229, 40575, 63808], 40595,
   6815     [35542, 63809], [22751, 63810], [24324, 63811], 26407, 28711, 29903,
   6816     [31840, 63812], [32894, 63813], 20769, 28712, [29282, 63814],
   6817     [30922, 63815], [36034, 63816], 36058, 36084, [38647, 63817],
   6818     [20102, 63930], [20698, 63931], [23534, 63932], 24278, [26009, 63934],
   6819     [29134, 63936], [30274, 63937], 30637, 32842, [34044, 63938],
   6820     [36988, 63939], 39719, [12243, 40845, 63940], [22744, 63818], 23105,
   6821     [23650, 63819], [27155, 63820], [28122, 63821], [28431, 63822], 30267,
   6822     [32047, 63823], [32311, 63824], 34078, 35128, 37860, [38475, 63825],
   6823     [21129, 63943], 26066, [26611, 63945], 27060, [27969, 63946],
   6824     [28316, 63947], 28687, [29705, 63948], 29792, [30041, 63949], 30244,
   6825     [30827, 63950], 35628, [39006, 63952], [20845, 63953], [25134, 63954],
   6826     [38520, 63955], 20374, [20523, 63956], [23833, 63957], [28138, 63958],
   6827     32184, [36650, 63959], [24459, 63960], [24900, 63961], [26647, 63962],
   6828     [38534, 63964], [21202, 63826], [32907, 63827], [20956, 63828],
   6829     [20940, 63829], 26974, [31260, 63830], [32190, 63831], [33777, 63832],
   6830     [38517, 63833], 20442, [21033, 63965], 21400, [21519, 63966], 21774,
   6831     [23653, 63967], 24743, [26446, 63969], [26792, 63970], 28012, 29313, 29432,
   6832     [29702, 63972], 29827, [30178, 63973], 31852, [32633, 63974], 32696, 33673,
   6833     [35023, 63975], [35041, 63976], [12197, 37324, 63977], 37328,
   6834     [38626, 63978], 39881, [21533, 63981], 28542, [29136, 63982],
   6835     [29848, 63983], [34298, 63984], 36522, [38563, 63985], [40023, 63986],
   6836     [40607, 63987], [26519, 63988], [28107, 63989], 29747, [33256, 63990],
   6837     38678, 30764, [12148, 31435, 63991], [31520, 63992], [31890, 63993], 25705,
   6838     29802, 30194, 30908, 30952, [12218, 39340], 39764, [12231, 40635], 23518,
   6839     24149, 28448, 33180, 33707, 37000, 19975, 21325, 23081, 24018, 24398,
   6840     24930, 25405, 26217, 26364, 28415, 28459, 28771, 30622, 33836, 34067,
   6841     34875, 36627, 39237, 39995, 21788, 25273, 26411, 27819, 33545, 35178,
   6842     38778, 20129, 22916, {f: 2, c: 24536}, 26395, 32178, 32596, 33426, 33579,
   6843     33725, 36638, 37017, 22475, 22969, 23186, 23504, 26151, 26522, 26757,
   6844     27599, 29028, 32629, 36023, 36067, 36993, 39749, 33032, 35978, 38476,
   6845     39488, [12230, 40613], 23391, 27667, 29467, 30450, 30431, 33804, 20906,
   6846     35219, 20813, 20885, 21193, 26825, 27796, 30468, 30496, 32191, 32236,
   6847     [12207, 38754], 40629, 28357, 34065, 20901, 21517, 21629, 26126, 26269,
   6848     26919, 28319, [12139, 30399], 30609, 33559, 33986, 34719, 37225, 37528,
   6849     40180, 34946, 20398, 20882, 21215, 22982, 24125, 24917, {f: 2, c: 25720},
   6850     26286, 26576, 27169, 27597, [12113, 27611], 29279, 29281, 29761, 30520,
   6851     [12141, 30683], 32791, 33468, 33541, 35584, 35624, 35980, [12106, 26408],
   6852     27792, 29287, [12140, 30446], 30566, 31302, 40361, 27519, 27794, 22818,
   6853     26406, 33945, 21359, 22675, 22937, 24287, 25551, 26164, 26483, 28218,
   6854     29483, 31447, 33495, 37672, 21209, 24043, 25006, 25035, 25098, 25287,
   6855     25771, [12102, 26080], 26969, 27494, [12111, 27595], 28961, 29687, 30045,
   6856     32326, 33310, 33538, 34154, 35491, 36031, 38695, 40289, 22696, 40664,
   6857     20497, 21006, 21563, 21839, [12098, 25991], 27766, {f: 2, c: 32010}, 32862,
   6858     34442, [12200, 38272], 38639, 21247, 27797, 29289, 21619, 23194, 23614,
   6859     23883, 24396, 24494, 26410, 26806, 26979, 28220, 28228, 30473,
   6860     [12150, 31859], 32654, 34183, 35598, 36855, 38753, 40692, 23735, 24758,
   6861     24845, 25003, 25935, {f: 2, c: 26107}, 27665, 27887, 29599, 29641, 32225,
   6862     38292, 23494, 34588, 35600, 21085, 21338, 25293, 25615, 25778, 26420,
   6863     27192, 27850, 29632, 29854, 31636, 31893, 32283, 33162, 33334, 34180,
   6864     36843, 38649, 39361, 20276, 21322, 21453, 21467, 25292, 25644, 25856,
   6865     26001, 27075, 27886, 28504, 29677, 30036, 30242, 30436, 30460, 30928,
   6866     [30971, 63844], 31020, 32070, 33324, 34784, 36820, 38930, 39151, 21187,
   6867     25300, 25765, 28196, 28497, 30332, 36299, 37297, 37474, 39662, 39747,
   6868     20515, 20621, 22346, 22952, 23592, 24135, 24439, 25151, 25918,
   6869     [12101, 26041], 26049, 26121, 26507, 27036, 28354, 30917, 32033, 32938,
   6870     33152, 33323, 33459, 33953, 34444, 35370, 35607, 37030, 38450, 40848,
   6871     20493, 20467, 22521, 24472, 25308, 25490, 26479, 28227, 28953, 30403,
   6872     32972, 32986, {f: 2, c: 35060}, 35097, 36064, 36649, 37197, 38506, 20271,
   6873     20336, 24091, 26575, 26658, [12137, 30333], 30334, 39748, 24161, 27146,
   6874     29033, 29140, 30058, 32321, 34115, 34281, 39132, 20240, 31567, 32624,
   6875     38309, 20961, 24070, 26805, 27710, 27726, 27867, 29359, 31684, 33539,
   6876     27861, 29754, 20731, 21128, 22721, 25816, 27287, 29863, 30294, 30887,
   6877     34327, 38370, 38713, 21342, 24321, 35722, 36776, 36783, 37002, 21029,
   6878     30629, 40009, 40712, 19993, 20482, 20853, 23643, 24183, 26142, 26170,
   6879     26564, 26821, 28851, 29953, 30149, 31177, 31453, 36647, 39200, 39432,
   6880     20445, 22561, 22577, 23542, 26222, 27493, 27921, 28282, 28541, 29668,
   6881     29995, 33769, 35036, 35091, 35676, 36628, 20239, 20693, 21264,
   6882     [12056, 21340], 23443, [24489, 63846], 26381, 31119, 33145, 33583, 34068,
   6883     35079, 35206, 36665, [36667, 64007], 39333, 39954, 26412, 20086, 20472,
   6884     22857, 23553, {f: 2, c: 23791}, 25447, 26834, 28925, 29090, 29739, 32299,
   6885     34028, 34562, 36898, 37586, 40179, [19981, 63847], 20184, 20463, 20613,
   6886     21078, 21103, 21542, 21648, 22496, 22827, 23142, 23386, 23413, 23500,
   6887     24220, 25206, 25975, 26023, 28014, 28325, [12119, 29238], 31526, 31807,
   6888     [12152, 32566], {f: 2, c: 33104}, 33178, 33344, 33433, 33705, 35331, 36000,
   6889     36070, 36091, 36212, 36282, 37096, 37340, [12201, 38428], 38468, 39385,
   6890     40167, [21271, 63843], 20998, 21545, 22132, 22707, 22868, 22894, 24575,
   6891     24996, 25198, 26128, 27774, 28954, 30406, 31881, 31966, 32027, 33452,
   6892     36033, 38640, 20315, 24343, 24447, 25282, 23849, 26379, 26842, 30844,
   6893     32323, 40300, 19989, 20633, [12052, 21269], 21290, 21329, 22915, 23138,
   6894     24199, 24754, 24970, 25161, 25209, 26000, 26503, 27047, [12112, 27604],
   6895     {f: 3, c: 27606}, 27832, 29749, 30202, 30738, 30865, 31189, 31192, 31875,
   6896     32203, 32737, 32933, 33086, 33218, 33778, 34586, 35048, 35513, 35692,
   6897     36027, 37145, [12206, 38750], [12214, 39131], [12240, 40763], 22188, 23338,
   6898     24428, 25996, 27315, 27567, 27996, 28657, 28693, 29277, 29613, 36007,
   6899     36051, 38971, 24977, 27703, 32856, 39425, 20045, 20107, 20123, 20181,
   6900     20282, 20284, 20351, 20447, 20735, 21490, 21496, 21766, 21987, 22235,
   6901     [12064, 22763], 22882, 23057, 23531, 23546, 23556, 24051, 24107, 24473,
   6902     24605, 25448, 26012, 26031, 26614, 26619, 26797, 27515, 27801, 27863,
   6903     28195, 28681, 29509, 30722, 31038, 31040, 31072, 31169, 31721, 32023,
   6904     32114, 32902, 33293, 33678, 34001, 34503, 35039, 35408, 35422, 35613,
   6905     36060, 36198, 36781, 37034, 39164, 39391, 40605, 21066, 26388, 20632,
   6906     21034, [12077, 23665], 25955, 27733, 29642, 29987, 30109, 31639, 33948,
   6907     37240, 38704, 20087, 25746, [27578, 63856], 29022, 34217, 19977, 26441,
   6908     26862, 28183, 33439, 34072, 34923, 25591, 28545, 37394, 39087, 19978,
   6909     20663, 20687, 20767, 21830, 21930, 22039, 23360, 23577, 23776, 24120,
   6910     24202, 24224, 24258, 24819, 26705, 27233, 28248, 29245, 29248,
   6911     [29376, 63994], 30456, 31077, 31665, 32724, 35059, 35316, 35443, 35937,
   6912     36062, 38684, [22622, 63852], 29885, 36093, 21959, 31329, [32034, 63850],
   6913     [12170, 33394], 29298, [12131, 29983], 29989, 31513, 22661, 22779, 23996,
   6914     24207, 24246, 24464, 24661, 25234, 25471, 25933, 26257, 26329, 26360,
   6915     26646, 26866, 29312, 29790, 31598, 32110, 32214, 32626, 32997, 33298,
   6916     34223, 35199, 35475, 36893, 37604, [12233, 40653], [12239, 40736],
   6917     [12067, 22805], 22893, 24109, 24796, 26132, 26227, 26512, 27728, 28101,
   6918     28511, [12143, 30707], 30889, 33990, 37323, 37675, 20185, 20682, 20808,
   6919     21892, 23307, 23459, 25159, 25982, 26059, 28210, 29053, 29697, 29764,
   6920     29831, 29887, 30316, 31146, 32218, 32341, 32680, 33146, 33203, 33337,
   6921     34330, 34796, 35445, 36323, 36984, 37521, 37925, 39245, 39854, 21352,
   6922     23633, 26964, 27844, 27945, 28203, [12166, 33292], 34203, 35131, 35373,
   6923     [35498, 63855, 63905], 38634, 40807, 21089, 26297, 27570, 32406, 34814,
   6924     36109, 38275, 38493, 25885, 28041, 29166, 22478, 22995, 23468, 24615,
   6925     24826, 25104, 26143, 26207, 29481, 29689, 30427, [30465, 63853], 31596,
   6926     32854, 32882, 33125, 35488, 37266, 19990, 21218, 27506, 27927, 31237,
   6927     31545, 32048, 36016, 21484, 22063, 22609, 23477, [12073, 23567], 23569,
   6928     24034, 25152, 25475, 25620, 26157, 26803, 27836, 28040, 28335, 28703,
   6929     28836, 29138, 29990, 30095, 30094, 30233, 31505, 31712, 31787, 32032,
   6930     32057, 34092, 34157, 34311, 35380, 36877, 36961, 37045, 37559, 38902,
   6931     39479, 20439, 23660, 26463, 28049, 31903, 32396, 35606, 36118, 36895,
   6932     23403, 24061, 25613, 33984, 36956, 39137, [29575, 63841, 63963], 23435,
   6933     24730, 26494, 28126, 35359, 35494, 36865, 38924, 21047, 28753, 30862,
   6934     37782, 34928, 37335, 20462, 21463, 22013, 22234, 22402, 22781, 23234,
   6935     23432, 23723, 23744, 24101, 24833, 25101, [12095, 25163], 25480, 25628,
   6936     25910, [25976, 63849], 27193, 27530, [12116, 27700], 27929, 28465, 29159,
   6937     29417, 29560, 29703, 29874, 30246, 30561, 31168, 31319, 31466, 31929,
   6938     32143, 32172, 32353, 32670, 33065, 33585, 33936, 34010, 34282, 34966,
   6939     35504, 35728, 36664, 36930, 36995, 37228, 37526, 37561, 38539,
   6940     {f: 2, c: 38567}, 38614, 38656, 38920, [12216, 39318], 39635, 39706, 21460,
   6941     22654, 22809, 23408, 23487, 28113, 28506, 29087, 29729, 29881, 32901,
   6942     33789, 24033, 24455, 24490, 24642, 26092, 26642, 26991, 27219, 27529,
   6943     27957, 28147, 29667, 30462, 30636, 31565, 32020, 33059, 33308, 33600,
   6944     34036, 34147, 35426, 35524, 37255, 37662, 38918, 39348, 25100, 34899,
   6945     36848, 37477, 23815, 23847, 23913, 29791, 33181, 34664, 28629,
   6946     [25342, 63859], 32722, 35126, 35186, 19998, 20056, 20711, 21213, 21319,
   6947     25215, 26119, 32361, 34821, 38494, 20365, 21273, 22070, 22987, 23204,
   6948     [12075, 23608], 23630, 23629, 24066, 24337, 24643, 26045, 26159, 26178,
   6949     26558, 26612, 29468, [12142, 30690], [12144, 31034], 32709, 33940, 33997,
   6950     35222, 35430, 35433, 35553, [12183, 35925], 35962, 22516, 23508, 24335,
   6951     24687, 25325, 26893, 27542, 28252, 29060, 31698, 34645, [35672, 63996],
   6952     36606, [12215, 39135], 39166, 20280, 20353, 20449, 21627, 23072, 23480,
   6953     24892, 26032, 26216, 29180, 30003, 31070, 32051, 33102, [12162, 33251],
   6954     33688, 34218, 34254, 34563, 35338, [12189, 36523], [12191, 36763], 36805,
   6955     22833, 23460, 23526, 24713, 23529, 23563, [12092, 24515], 27777, 28145,
   6956     28683, 29978, 33455, 35574, [20160, 63997], [12055, 21313], 38617,
   6957     [12114, 27663], 20126, 20420, 20818, 21854, 23077, 23784, 25105,
   6958     [12123, 29273], 33469, 33706, 34558, 34905, 35357, 38463, 38597, 39187,
   6959     40201, 40285, 22538, 23731, 23997, 24132, [24801, 63929], 24853, 25569,
   6960     [27138, 63764, 63836, 63935], 28197, 37122, 37716, 38990, 39952, 40823,
   6961     23433, 23736, 25353, 26191, 26696, 30524, 38593, 38797, 38996, 39839,
   6962     26017, 35585, 36555, 38332, 21813, 23721, 24022, 24245, 26263, 30284,
   6963     33780, 38343, 22739, 25276, 29390, 40232, 20208, 22830, 24591, 26171,
   6964     27523, 31207, 40230, 21395, 21696, 22467, 23830, 24859, 26326, 28079,
   6965     30861, 33406, 38552, 38724, 21380, 25212, 25494, 28082, 32266, 33099,
   6966     38989, 27387, 32588, 40367, 40474, 20063, 20539, 20918, 22812, 24825,
   6967     25590, 26928, 29242, 32822, 37326, 24369, 32004, [33509, 63860], 33903,
   6968     33979, 34277, 36493, 20335, 22756, 23363, 24665, 25562, 25880, 25965,
   6969     26264, 26954, 27171, 27915, 28673, 29036, 30162, 30221, 31155, 31344,
   6970     [12154, 32650], 35140, 35731, 37312, 38525, 39178, 22276, 24481, 26044,
   6971     28417, 30208, 31142, 35486, 39341, [12226, 39770], 40812, 20740, 25014,
   6972     25233, 27277, 33222, 20547, 22576, 24422, 28937, [12180, 35328], 35578,
   6973     23420, 34326, 20474, 20796, 22196, 22852, 25513, 28153, 23978, 26989,
   6974     20870, 20104, 20313, 22914, 27487, 27741, 29877, 30998, 33287, 33349,
   6975     33593, 36671, 36701, 39192, 20134, 22495, 24441, [26131, 63968], 30123,
   6976     32377, 35695, 36870, 39515, 22181, 22567, 23032, 23071, 23476, 24310,
   6977     25424, 25403, 26941, 27783, 27839, 28046, 28051, 28149, 28436, 28895,
   6978     28982, 29017, 29123, 29141, 30799, 30831, 31605, 32227, 32303, 34893,
   6979     36575, 37467, 40182, 24709, 28037, 29105, 38321, 21421, 26579, 28814,
   6980     28976, 29744, 33398, 33490, 38331, 39653, 40573, 26308, 29121,
   6981     [33865, 63854], 22603, 23992, 24433, 26144, 26254, 27001, 27054, 27704,
   6982     27891, 28214, 28481, 28634, 28699, 28719, 29008, 29151, 29552, 29787,
   6983     29908, 30408, 31310, 32403, 33521, 35424, 36814, 37704, 38681, 20034,
   6984     20522, 21000, 21473, 26355, 27757, 28618, 29450, 30591, 31330, 33454,
   6985     34269, 34306, 35028, 35427, 35709, 35947, 37555, 38675, 38928, 20116,
   6986     20237, 20425, 20658, 21320, 21566, 21555, 21978, 22626, 22714, 22887,
   6987     23067, 23524, 24735, 25034, 25942, 26111, 26212, 26791, 27738, 28595,
   6988     28879, 29100, 29522, 31613, 34568, 35492, 39986, 40711, 23627, 27779,
   6989     29508, [12127, 29577], 37434, 28331, 29797, 30239, 31337, 32277, 34314,
   6990     20800, 22725, 25793, 29934, 29973, 30320, 32705, 37013, 38605, 39252,
   6991     28198, [12129, 29926], {f: 2, c: 31401}, 33253, 34521, 34680, 35355, 23113,
   6992     23436, 23451, 26785, 26880, 28003, 29609, 29715, 29740, 30871, 32233,
   6993     32747, 33048, 33109, 33694, 35916, [38446, 63942], 38929, [12104, 26352],
   6994     24448, 26106, 26505, 27754, 29579, 20525, 23043, 27498, 30702, 22806,
   6995     23916, 24013, 29477, 30031, 20709, 20985, 22575, 22829, 22934, 23002,
   6996     23525, 23970, 25303, 25622, 25747, 25854, 26332, 27208, 29183, 29796,
   6997     31368, 31407, 32327, 32350, 32768, 33136, 34799, 35201, 35616, 36953,
   6998     36992, 39250, 24958, 27442, 28020, 32287, 35109, 36785, 20433, 20653,
   6999     20887, 21191, 22471, 22665, 23481, 24248, 24898, 27029, 28044, 28263,
   7000     28342, 29076, 29794, [12132, 29992], 29996, 32883, 33592, 33993, 36362,
   7001     37780, 37854, 20110, 20305, 20598, 20778, [12060, 21448], 21451, 21491,
   7002     23431, 23507, 23588, 24858, 24962, 26100, [12124, 29275], 29591, 29760,
   7003     30402, 31056, 31121, 31161, 32006, [12155, 32701], 33419, 34261, 34398,
   7004     36802, 36935, 37109, 37354, 38533, [12204, 38632], 38633, 21206, 24423,
   7005     26093, 26161, 26671, 29020, 31286, 37057, 38922, 20113, 27218, 27550,
   7006     28560, 29065, 32792, 33464, 34131, 36939, 38549, 38642, 38907, 34074,
   7007     39729, 20112, 29066, 38596, 20803, 21407, 21729, 22291, 22290, 22435,
   7008     23195, 23236, 23491, 24616, 24895, 25588, 27781, 27961, 28274, 28304,
   7009     29232, 29503, 29783, 33489, 34945, 36677, 36960, 38498, 39000, 40219,
   7010     [12105, 26376], 36234, 37470, 20301, 20553, 20702, 21361, 22285, 22996,
   7011     23041, 23561, 24944, 26256, 28205, 29234, 29771, 32239, 32963, 33806,
   7012     33894, 34111, 34655, 34907, 35096, 35586, 36949, [12209, 38859], 39759,
   7013     20083, 20369, 20754, 20842, 21807, 21929, 23418, 23461, {f: 2, c: 24188},
   7014     24254, 24736, 24799, {f: 2, c: 24840}, 25540, 25912, 26377, 26580, 26586,
   7015     {f: 2, c: 26977}, 27833, 27943, 28216, 28641, {f: 2, c: 29494}, 29788,
   7016     30001, 30290, 32173, 33278, 33848, 35029, 35480, 35547, 35565, 36400,
   7017     36418, 36938, 36926, 36986, [12195, 37193], 37321, 37742, 22537, 27603,
   7018     [12161, 32905], 32946, 20801, 22891, 23609, 28516, 29607, 32996, 36103,
   7019     37399, 38287, [12160, 32895], 25102, 28700, 32104, 34701, 22432, 24681,
   7020     24903, 27575, 35518, 37504, 38577, [12036, 20057], 21535, 28139, 34093,
   7021     38512, [12211, 38899], 39150, 25558, 27875, [12194, 37009], 20957, 25033,
   7022     33210, 40441, 20381, 20506, 20736, 23452, 24847, 25087, 25836, 26885,
   7023     27589, 30097, 30691, 32681, 33380, 34191, 34811, [12176, 34915], 35516,
   7024     35696, 37291, [12038, 20108], 20197, 20234, 22839, 23016, 24050, 24347,
   7025     24411, 24609, 29246, 29669, [30064, 63842], 30157, 31227, [12157, 32780],
   7026     [12159, 32819], 32900, 33505, 33617, 36029, 36019, 36999, 39156, 39180,
   7027     28727, 30410, 32714, 32716, 32764, 35610, [12040, 20154], 20161, 20995,
   7028     21360, [21693, 63902], 22240, 23035, 23493, 24341, 24525, 28270, 32106,
   7029     33589, 34451, 35469, 38765, 38775, [12032, 19968], 20314, 20350, 22777,
   7030     [12103, 26085], 28322, 36920, 37808, 39353, 20219, 22764, 22922, 23001,
   7031     24641, 31252, 33615, 36035, [12042, 20837], 21316, 20173, 21097, 23381,
   7032     33471, 20180, [21050, 63999], 21672, 22985, 23039, [12070, 23376], 23383,
   7033     23388, 24675, 24904, 28363, [28825, 63995], 29038, 29574, 29943, 30133,
   7034     30913, 32043, 32773, [12163, 33258], 33576, 34071, 34249, 35566, 36039,
   7035     38604, 20316, 21242, 22204, 26027, 26152, 28796, 28856, 29237, 32189,
   7036     33421, 37196, 38592, 40306, 23409, 26855, 27544, 28538, 30430, 23697,
   7037     26283, 28507, 31668, 31786, 34870, 38620, 19976, 20183, 21280, 22580,
   7038     22715, 22767, 22892, 23559, 24115, 24196, 24373, 25484, 26290, 26454,
   7039     27167, 27299, 27404, 28479, 29254, 29520, 29835, 31456, 31911, 33144,
   7040     33247, 33255, 33674, 33900, 34083, 34196, 34255, 35037, 36115, 37292,
   7041     [12199, 38263], 38556, 20877, 21705, 22312, 23472, 25165, 26448, 26685,
   7042     26771, 28221, 28371, 28797, 32289, 35009, 36001, 36617, 40779, 40782,
   7043     29229, 31631, 35533, 37658, 20295, 20302, 20786, 21632, 22992, 24213,
   7044     25269, 26485, 26990, 27159, 27822, 28186, 29401, 29482, 30141, 31672,
   7045     32053, 33511, 33785, 33879, 34295, 35419, 36015, 36487, 36889, 37048,
   7046     38606, 40799, 21219, 21514, 23265, 23490, 25688, 25973, 28404, 29380,
   7047     30340, 31309, 31515, 31821, 32318, 32735, 33659, 35627, 36042,
   7048     [12186, 36196], 36321, 36447, 36842, 36857, 36969, 37841, 20291, 20346,
   7049     20659, 20840, 20856, 21069, 21098, 22625, 22652, 22880, 23560, 23637,
   7050     24283, 24731, 25136, 26643, 27583, 27656, 28593, 29006, 29728,
   7051     [12133, 30000], 30008, 30033, 30322, 31564, 31627, 31661, 31686, 32399,
   7052     35438, 36670, 36681, 37439, 37523, 37666, 37931, 38651, 39002, 39019,
   7053     39198, [20999, 64000], 25130, 25240, 27993, 30308, 31434, 31680, 32118,
   7054     21344, 23742, 24215, 28472, 28857, 31896, 38673, 39822, 40670, 25509,
   7055     25722, 34678, 19969, 20117, 20141, 20572, 20597, 21576, 22979, 23450,
   7056     24128, 24237, 24311, 24449, 24773, 25402, 25919, 25972, 26060, 26230,
   7057     26232, 26622, 26984, 27273, 27491, 27712, 28096, 28136, 28191, 28254,
   7058     28702, 28833, 29582, 29693, 30010, 30555, 30855, 31118, 31243, 31357,
   7059     31934, 32142, 33351, 35330, 35562, 35998, 37165, 37194, 37336, 37478,
   7060     37580, 37664, 38662, 38742, 38748, 38914, [12237, 40718], 21046, 21137,
   7061     21884, 22564, 24093, 24351, 24716, 25552, 26799, 28639, 31085, 31532,
   7062     33229, 34234, 35069, 35576, 36420, 37261, 38500, 38555, 38717, 38988,
   7063     [12241, 40778], 20430, 20806, 20939, 21161, 22066, 24340, 24427, 25514,
   7064     25805, 26089, 26177, 26362, 26361, 26397, 26781, 26839, 27133, 28437,
   7065     28526, 29031, 29157, [12118, 29226], 29866, 30522, 31062, 31066, 31199,
   7066     31264, 31381, 31895, 31967, 32068, 32368, 32903, 34299, 34468, 35412,
   7067     35519, 36249, 36481, 36896, 36973, 37347, 38459, 38613, [12227, 40165],
   7068     26063, 31751, [12188, 36275], 37827, 23384, 23562, 21330, 25305, 29469,
   7069     20519, 23447, 24478, 24752, 24939, 26837, 28121, 29742, 31278, 32066,
   7070     32156, 32305, 33131, 36394, 36405, 37758, 37912, 20304, 22352, 24038,
   7071     24231, 25387, 32618, 20027, 20303, 20367, 20570, 23005, 32964, 21610,
   7072     21608, 22014, 22863, 23449, 24030, 24282, 26205, 26417, 26609, 26666,
   7073     27880, 27954, 28234, 28557, 28855, 29664, 30087, 31820, 32002, 32044,
   7074     32162, [12168, 33311], 34523, 35387, 35461, [12187, 36208], 36490, 36659,
   7075     36913, 37198, 37202, 37956, 39376, [12149, 31481], 31909, 20426, 20737,
   7076     20934, 22472, 23535, 23803, 26201, 27197, 27994, 28310, 28652, 28940,
   7077     30063, 31459, 34850, 36897, 36981, 38603, 39423, 33537, 20013, 20210,
   7078     34886, 37325, 21373, 27355, 26987, 27713, 33914, 22686, 24974, 26366,
   7079     25327, 28893, 29969, 30151, 32338, 33976, 35657, 36104, 20043, 21482,
   7080     21675, 22320, 22336, 24535, 25345, 25351, 25711, [12096, 25903], 26088,
   7081     26234, 26525, 26547, [12108, 27490], 27744, 27802, 28460, 30693, 30757,
   7082     31049, 31063, 32025, 32930, 33026, [12164, 33267], 33437, 33463, 34584,
   7083     35468, 36100, 36286, 36978, 30452, 31257, 31287, 32340, 32887, 21767,
   7084     21972, 22645, 25391, 25634, 26185, 26187, 26733, 27035, 27524, 27941,
   7085     28337, 29645, 29800, 29857, 30043, 30137, 30433, 30494, 30603, 31206,
   7086     32265, 32285, 33275, 34095, 34967, 35386, 36049, 36587,
   7087     [12192, 36784, 63857], 36914, 37805, 38499, 38515, 38663, 20356, 21489,
   7088     23018, 23241, 24089, 26702, 29894, 30142, 31209, 31378, 33187, 34541,
   7089     36074, 36300, 36845, 26015, 26389, 22519, 28503, 32221, 36655, 37878,
   7090     38598, 24501, 25074, 28548, 19988, 20376, 20511, 21449, 21983, 23919,
   7091     24046, 27425, 27492, 30923, 31642, 36425, [12190, 36554, 63746], 36974,
   7092     25417, 25662, 30528, 31364, 37679, 38015, 40810, 25776, 28591, 29158,
   7093     29864, 29914, 31428, 31762, 32386, 31922, 32408, 35738, 36106, 38013,
   7094     39184, 39244, 21049, 23519, 25830, 26413, 32046, 20717, [21443, 63851],
   7095     22649, {f: 2, c: 24920}, 25082, 26028, 31449, 35730, 35734, 20489, 20513,
   7096     21109, 21809, 23100, 24288, 24432, 24884, 25950, 26124, 26166, 26274,
   7097     27085, 28356, 28466, 29462, 30241, 31379, 33081, 33369, 33750, 33980,
   7098     20661, 22512, 23488, 23528, 24425, 25505, 30758, 32181, 33756, 34081,
   7099     37319, 37365, 20874, 26613, 31574, 36012, 20932, 22971, 24765, 34389,
   7100     20508, 21076, 23610, 24957, 25114, [25299, 64002], 25842, 26021, 28364,
   7101     30240, 33034, 36448, 38495, 38587, 20191, 21315, 21912, 22825, 24029,
   7102     25797, 27849, 28154, 29588, 31359, [12167, 33307], 34214, 36068, 36368,
   7103     36983, 37351, 38369, 38433, 38854, 20984, 21746, 21894, 24505, 25764,
   7104     28552, 32180, 36639, 36685, 37941, 20681, 23574, 27838, 28155, 29979,
   7105     30651, 31805, 31844, 35449, 35522, 22558, 22974, 24086, 25463, 29266,
   7106     30090, 30571, 35548, 36028, 36626, 24307, 26228, 28152, 32893, 33729,
   7107     35531, [12205, 38737], 39894, 21059, 26367, 28053, 28399, 32224, 35558,
   7108     36910, 36958, 39636, 21021, 21119, 21736, 24980, 25220, 25307, 26786,
   7109     26898, 26970, 27189, 28818, 28966, 30813, 30977, 30990, 31186, 31245,
   7110     32918, [12171, 33400], 33493, 33609, 34121, 35970, 36229, 37218, 37259,
   7111     37294, 20419, 22225, 29165, 30679, 34560, 35320, [12072, 23544], 24534,
   7112     26449, 37032, 21474, 22618, 23541, 24740, 24961, 25696, 32317, 32880,
   7113     34085, 37507, 25774, 20652, 23828, 26368, 22684, 25277, 25512, 26894,
   7114     27000, 27166, 28267, 30394, 31179, 33467, 33833, 35535, 36264, 36861,
   7115     37138, 37195, 37276, 37648, 37656, 37786, 38619, 39478, 39949, 19985,
   7116     30044, 31069, 31482, 31569, 31689, 32302, 33988, 36441, 36468, 36600,
   7117     36880, 26149, 26943, 29763, 20986, 26414, 40668, 20805, 24544, 27798,
   7118     34802, 34909, 34935, 24756, 33205, 33795, 36101, 21462, 21561, 22068,
   7119     23094, 23601, 28810, 32736, 32858, 33030, 33261, 36259, 37257, 39519,
   7120     40434, 20596, 20164, 21408, 24827, 28204, 23652, 20360, 20516, 21988,
   7121     23769, 24159, 24677, 26772, 27835, 28100, 29118, 30164, 30196, 30305,
   7122     31258, 31305, 32199, 32251, 32622, 33268, 34473, 36636, 38601, 39347,
   7123     [12242, 40786], 21063, 21189, 39149, 35242, 19971, 26578, 28422, 20405,
   7124     23522, 26517, [27784, 63858], 28024, 29723, 30759, 37341, 37756, 34756,
   7125     31204, 31281, 24555, 20182, 21668, 21822, 22702, 22949, 24816, 25171,
   7126     25302, 26422, 26965, 33333, 38464, 39345, 39389, 20524, 21331, 21828,
   7127     22396, 25176, 25826, 26219, 26589, 28609, 28655, 29730, 29752, 35351,
   7128     37944, 21585, 22022, 22374, 24392, 24986, 27470, 28760, 28845, 32187,
   7129     35477, 22890, 33067, 25506, 30472, 32829, 36010, 22612, 25645, 27067,
   7130     23445, 24081, 28271, 34153, 20812, 21488, 22826, 24608, 24907, 27526,
   7131     27760, 27888, 31518, 32974, 33492, 36294, 37040, 39089, 25799, 28580,
   7132     25745, 25860, 20814, 21520, [12063, 22303], 35342, 24927, 26742, 30171,
   7133     31570, 32113, 36890, 22534, 27084, 33151, 35114, 36864, 38969, 20600,
   7134     22871, 22956, 25237, 36879, 39722, 24925, 29305, 38358, 22369, 23110,
   7135     24052, 25226, 25773, 25850, 26487, 27874, 27966, 29228, 29750, 30772,
   7136     32631, 33453, 36315, 38935, 21028, 22338, 26495, 29256, 29923, 36009,
   7137     36774, 37393, 38442, [12043, 20843], 21485, 25420, 20329, 21764, 24726,
   7138     25943, 27803, 28031, 29260, 29437, 31255, 35207, [12185, 35997], 24429,
   7139     28558, 28921, 33192, 24846, [20415, 63845], 20559, 25153, [12122, 29255],
   7140     31687, 32232, 32745, 36941, 38829, 39449, 36022, 22378, 24179, 26544,
   7141     33805, 35413, 21536, 23318, 24163, 24290, 24330, 25987, 32954, 34109,
   7142     38281, 38491, 20296, 21253, 21261, 21263, 21638, 21754, 22275, 24067,
   7143     24598, 25243, 25265, 25429, 27873, 28006, 30129, 30770, 32990, 33071,
   7144     33502, 33889, 33970, 34957, 35090, 36875, 37610, 39165, 39825, 24133,
   7145     [26292, 64006], 26333, 28689, 29190, 20469, 21117, 24426, 24915, 26451,
   7146     27161, 28418, 29922, 31080, 34920, 35961, 39111, 39108, 39491, 21697,
   7147     31263, 26963, 35575, 35914, [12213, 39080], 39342, 24444, 25259, 30130,
   7148     [12138, 30382], 34987, 36991, 38466, 21305, 24380, 24517, [27852, 63848],
   7149     29644, 30050, [12134, 30091], 31558, 33534, 39325, 20047, 36924, 19979,
   7150     20309, 21414, 22799, 24264, 26160, 27827, 29781, 33655, 34662, 36032,
   7151     36944, 38686, 39957, 22737, 23416, 34384, 35604, 40372, 23506, 24680,
   7152     24717, 26097, 27735, 28450, 28579, 28698, 32597, 32752, {f: 2, c: 38289},
   7153     38480, 38867, 21106, 36676, 20989, 21547, 21688, 21859, 21898, 27323,
   7154     28085, 32216, 33382, 37532, 38519, 40569, 21512, 21704, 30418, 34532,
   7155     38308, 38356, 38492, 20130, 20233, 23022, 23270, 24055, 24658, 25239,
   7156     26477, 26689, 27782, 28207, 32568, 32923, 33322, 38917, 20133, 20565,
   7157     21683, 22419, 22874, 23401, 23475, 25032, 26999, 28023, 28707, 34809,
   7158     35299, 35442, 35559, 36994, 39405, 39608, 21182, 26680, 20502, 24184,
   7159     26447, 33607, [12175, 34892, 64008], 20139, 21521, 22190, 29670, 37141,
   7160     38911, 39177, 39255, [12217, 39321], 22099, 22687, 34395, 35377, 25010,
   7161     27382, 29563, 36562, 27463, 38570, 39511, 22869, 29184, 36203,
   7162     [12208, 38761], 20436, 23796, 24358, 25080, 26203, 27883, 28843,
   7163     [12126, 29572], 29625, 29694, 30505, 30541, 32067, 32098, 32291, 33335,
   7164     34898, 36066, 37449, 39023, 23377, [12147, 31348], [12174, 34880],
   7165     [12212, 38913], 23244, 20448, 21332, 22846, 23805, 25406, 28025, 29433,
   7166     33029, 33031, 33698, 37583, 38960, 20136, 20804, 21009, 22411, 24418,
   7167     27842, 28366, 28677, 28752, 28847, 29074, 29673, [29801, 63918], 33610,
   7168     34722, 34913, 36872, 37026, 37795, 39336, 20846, 24407, 24800, 24935,
   7169     26291, 34137, 36426, 37295, 38795, 20046, 20114, 21628, 22741, 22778,
   7170     22909, 23733, 24359, [12094, 25142], 25160, 26122, 26215, 27627, 28009,
   7171     28111, 28246, 28408, 28564, 28640, 28649, 28765, 29392, 29733, 29786,
   7172     29920, 30355, 31068, 31946, 32286, 32993, 33446, 33899, 33983, 34382,
   7173     34399, 34676, 35703, 35946, 37804, 38912, 39013, 24785, 25110, 37239,
   7174     23130, 26127, 28151, 28222, 29759, 39746, 24573, 24794, 31503, 21700,
   7175     24344, 27742, 27859, 27946, 28888, 32005, 34425, 35340, 40251, 21270,
   7176     21644, 23301, 27194, [12117, 28779], 30069, 31117, [12146, 31166], 33457,
   7177     33775, 35441, 35649, 36008, 38772, 25844, 25899, {f: 2, c: 30906}, 31339,
   7178     20024, 21914, 22864, 23462, 24187, 24739, 25563, 27489, 26213, 26707,
   7179     28185, 29029, 29872, 32008, 36996, 39529, 39973, 27963, [28369, 63748],
   7180     29502, 35905, 38346, 20976, 24140, 24488, 24653, 24822, 24880, 24908,
   7181     {f: 2, c: 26179}, 27045, 27841, 28255, 28361, 28514, 29004, 29852, 30343,
   7182     31681, 31783, 33618, 34647, 36945, 38541, [12232, 40643], 21295, 22238,
   7183     24315, 24458, 24674, 24724, 25079, 26214, 26371, 27292, 28142, 28590,
   7184     28784, 29546, 32362, 33214, 33588, 34516, 35496, 36036, 21123, 29554,
   7185     23446, 27243, 37892, 21742, 22150, 23389, 25928, 25989, 26313, 26783,
   7186     28045, 28102, [12120, 29243], 32948, 37237, 39501, 20399, 20505, 21402,
   7187     21518, 21564, 21897, 21957, 24127, 24460, 26429, 29030, 29661, 36869,
   7188     21211, 21235, 22628, 22734, 28932, 29071, 29179, 34224, 35347,
   7189     [26248, 63941], 34216, 21927, 26244, 29002, 33841, 21321, 21913, 27585,
   7190     24409, 24509, 25582, 26249, 28999, 35569, 36637, 40638, 20241, 25658,
   7191     28875, 30054, 34407, 24676, 35662, 40440, 20807, 20982, 21256, 27958,
   7192     33016, [12234, 40657], 26133, 27427, 28824, 30165, 21507, 23673, 32007,
   7193     35350, [12107, 27424], 27453, 27462, 21560, 24688, 27965, 32725, 33288,
   7194     20694, 20958, 21916, 22123, 22221, 23020, 23305, 24076, 24985, 24984,
   7195     25137, 26206, 26342, 29081, {f: 2, c: 29113}, 29351, 31143, 31232, 32690,
   7196     35440, {s: 163}, {f: 4, c: 12310}, {s: 14}, 8223, 8219, {f: 2, c: 8314},
   7197     {s: 7}, 8316, 0, {f: 2, c: 8317}, {s: 23}, 700, {s: 44}, 8942, 8759,
   7198     {s: 20}, {f: 10, c: 10122}, {s: 36}, {f: 26, c: 9398}, {s: 61},
   7199     {f: 2, c: 8826}, {f: 2, c: 8910}, {f: 2, c: 8832}, {f: 4, c: 8816}, 0,
   7200     8842, 0, 8843, {f: 2, c: 8822}, 8825, {f: 2, c: 8922}, {s: 5}, 8773, 8771,
   7201     8776, 0, 8868, {s: 78}, 8244, {s: 11}, 9839, {s: 4}, 8258, {s: 4}, 10045,
   7202     0, 0, 8226, {s: 4}, {f: 2, c: 8249}, {s: 16}, 10010, 10006, 0, 9711,
   7203     {s: 3}, 10070, 0, 9676, {s: 24}, 9775, {s: 6}, 12320, 0, {f: 10, c: 10102},
   7204     {s: 17}, 12306, 12342, {s: 13}, 8710, 0, 8735, 0, {f: 2, c: 8741}, 0, 8787,
   7205     8785, {f: 2, c: 8806}, 8723, {f: 3, c: 8853}, 0, 8980, 0, 0, 8802, 0, 9649,
   7206     0, 8738, 8784, 0, 0, 8867, 0, 0, {f: 2, c: 8814}, 8837, 8836, 8713, 8716,
   7207     {f: 2, c: 8891}, 8794, 8966, {s: 6}, 12958, 0, 8252, {s: 11}, 9702, {s: 3},
   7208     9663, 9653, 9657, 9667, {s: 4}, 9674, 12849, 12857, 13259, {f: 5, c: 9327},
   7209     {s: 18}, 8656, 8655, 8653, {s: 37}, 8657, 8659, {s: 8}, 8626, 8625, 0,
   7210     8628, 8624, 8627, {s: 14}, 8636, 8640, {s: 10}, {f: 2, c: 8644}, {s: 144},
   7211     {f: 5, c: 9347}, {s: 33}, 12948, {s: 15}, 12965, {s: 93}, 8672, 8674, 8673,
   7212     8675, {s: 4}, 8678, 8680, 8679, 8681, {s: 20}, 9757, 9759, {s: 76}, 12944,
   7213     {f: 6, c: 12938}, {s: 15}, {f: 2, c: 12318}, 8246, 0, 8245, {s: 3}, 12540,
   7214     0, 0, {f: 2, c: 44034}, {f: 2, c: 44037}, {f: 5, c: 44043}, 44056,
   7215     {f: 2, c: 44062}, {f: 3, c: 44065}, {f: 7, c: 44069}, 44078,
   7216     {f: 6, c: 44082}, {f: 2, c: 44090}, {f: 3, c: 44093}, {f: 10, c: 44097},
   7217     44108, {f: 6, c: 44110}, {f: 3, c: 44117}, {f: 3, c: 44121},
   7218     {f: 19, c: 44125}, {f: 2, c: 44146}, {f: 2, c: 44149}, 44153,
   7219     {f: 5, c: 44155}, 44162, {f: 2, c: 44167}, {f: 3, c: 44173},
   7220     {f: 3, c: 44177}, {f: 7, c: 44181}, 44190, {f: 6, c: 44194}, 44203,
   7221     {f: 2, c: 44205}, {f: 7, c: 44209}, 44218, {f: 3, c: 44222},
   7222     {f: 2, c: 44226}, {f: 3, c: 44229}, {f: 3, c: 44233}, {f: 8, c: 44237},
   7223     44246, {f: 8, c: 44248}, {f: 2, c: 44258}, {f: 2, c: 44261}, 44265, 44267,
   7224     {f: 2, c: 44269}, 44274, 44276, {f: 5, c: 44279}, {f: 2, c: 44286},
   7225     {f: 3, c: 44289}, 44293, {f: 5, c: 44295}, 44302, 44304, {f: 6, c: 44306},
   7226     {f: 3, c: 44313}, {f: 3, c: 44317}, {f: 8, c: 44321}, {f: 2, c: 44330},
   7227     {f: 6, c: 44334}, {f: 2, c: 44342}, {f: 3, c: 44345}, {f: 7, c: 44349},
   7228     44358, 44360, {f: 6, c: 44362}, {f: 3, c: 44369}, {f: 3, c: 44373},
   7229     {f: 8, c: 44377}, 44386, {f: 8, c: 44388}, {f: 2, c: 44398},
   7230     {f: 2, c: 44401}, {f: 4, c: 44407}, 44414, 44416, {f: 5, c: 44419},
   7231     {f: 2, c: 44426}, {f: 3, c: 44429}, {f: 11, c: 44433}, {f: 6, c: 44446},
   7232     {f: 18, c: 44453}, {f: 8, c: 44472}, {f: 2, c: 44482}, {f: 3, c: 44485},
   7233     {f: 7, c: 44489}, 44498, {f: 8, c: 44500}, {f: 3, c: 44509},
   7234     {f: 3, c: 44513}, {f: 19, c: 44517}, {f: 2, c: 44538}, {f: 2, c: 44541},
   7235     {f: 6, c: 44546}, 44554, 44556, {f: 6, c: 44558}, {f: 27, c: 44565},
   7236     {f: 2, c: 44594}, {f: 2, c: 44597}, 44601, {f: 5, c: 44603}, 44610, 44612,
   7237     {f: 3, c: 44615}, 44619, 44623, {f: 3, c: 44625}, 44629, {f: 5, c: 44631},
   7238     44638, {f: 3, c: 44642}, {f: 2, c: 44646}, {f: 2, c: 44650},
   7239     {f: 3, c: 44653}, {f: 7, c: 44657}, 44666, {f: 6, c: 44670},
   7240     {f: 6, c: 44678}, {f: 47, c: 44685}, 44735, {f: 3, c: 44737},
   7241     {f: 7, c: 44741}, 44750, {f: 6, c: 44754}, {f: 2, c: 44762},
   7242     {f: 11, c: 44765}, {f: 2, c: 44777}, 44780, {f: 6, c: 44782},
   7243     {f: 3, c: 44789}, {f: 3, c: 44793}, {f: 10, c: 44797}, {f: 4, c: 44809},
   7244     {f: 2, c: 44814}, {f: 27, c: 44817}, {f: 2, c: 44846}, 44849, 44851,
   7245     {f: 7, c: 44853}, 44862, 44864, {f: 4, c: 44868}, {f: 6, c: 44874},
   7246     {f: 11, c: 44881}, {f: 6, c: 44894}, {f: 19, c: 44902}, {f: 6, c: 44922},
   7247     {f: 3, c: 44929}, {f: 3, c: 44933}, {f: 7, c: 44937}, {f: 3, c: 44946},
   7248     {f: 6, c: 44950}, {f: 27, c: 44957}, {f: 2, c: 44986}, {f: 3, c: 44989},
   7249     {f: 6, c: 44993}, 45002, 45004, {f: 5, c: 45007}, {f: 7, c: 45013},
   7250     {f: 11, c: 45021}, {f: 6, c: 45034}, {f: 2, c: 45042}, {f: 3, c: 45045},
   7251     {f: 7, c: 45049}, {f: 2, c: 45058}, {f: 7, c: 45061}, {f: 3, c: 45069},
   7252     {f: 3, c: 45073}, {f: 7, c: 45077}, {f: 10, c: 45086}, {f: 27, c: 45097},
   7253     {f: 2, c: 45126}, 45129, 45131, 45133, {f: 4, c: 45135}, 45142, 45144,
   7254     {f: 3, c: 45146}, {f: 30, c: 45150}, {f: 2, c: 45182}, {f: 3, c: 45185},
   7255     {f: 7, c: 45189}, 45198, 45200, {f: 6, c: 45202}, 45211, {f: 2, c: 45213},
   7256     {f: 5, c: 45219}, 45226, 45232, 45234, {f: 2, c: 45238}, {f: 3, c: 45241},
   7257     {f: 7, c: 45245}, 45254, {f: 6, c: 45258}, {f: 2, c: 45266},
   7258     {f: 3, c: 45269}, {f: 7, c: 45273}, {f: 4, c: 45281}, {f: 34, c: 45286},
   7259     45322, {f: 3, c: 45325}, 45329, {f: 4, c: 45332}, 45338, {f: 5, c: 45342},
   7260     {f: 2, c: 45350}, {f: 3, c: 45353}, {f: 7, c: 45357}, 45366,
   7261     {f: 6, c: 45370}, {f: 2, c: 45378}, {f: 3, c: 45381}, {f: 7, c: 45385},
   7262     {f: 2, c: 45394}, {f: 2, c: 45398}, {f: 3, c: 45401}, {f: 3, c: 45405},
   7263     {f: 23, c: 45409}, {f: 2, c: 45434}, {f: 3, c: 45437}, 45441,
   7264     {f: 5, c: 45443}, 45450, 45452, {f: 4, c: 45454}, {f: 3, c: 45461},
   7265     {f: 3, c: 45465}, {f: 11, c: 45469}, {f: 35, c: 45481}, {f: 3, c: 45517},
   7266     {f: 3, c: 45521}, {f: 7, c: 45525}, 45534, {f: 8, c: 45536},
   7267     {f: 2, c: 45546}, {f: 3, c: 45549}, {f: 8, c: 45553}, 45562, 45564,
   7268     {f: 6, c: 45566}, {f: 2, c: 45574}, {f: 2, c: 45577}, {f: 7, c: 45581},
   7269     45590, 45592, {f: 6, c: 45594}, {f: 19, c: 45601}, {f: 7, c: 45621},
   7270     {f: 27, c: 45629}, {f: 3, c: 45657}, {f: 3, c: 45661}, {f: 7, c: 45665},
   7271     {f: 10, c: 45674}, {f: 6, c: 45686}, {f: 7, c: 45693}, {f: 3, c: 45702},
   7272     {f: 6, c: 45706}, {f: 2, c: 45714}, {f: 3, c: 45717}, {f: 5, c: 45723},
   7273     45730, 45732, {f: 3, c: 45735}, 45739, {f: 3, c: 45741}, {f: 3, c: 45745},
   7274     {f: 19, c: 45749}, {f: 2, c: 45770}, {f: 3, c: 45773}, 45777,
   7275     {f: 5, c: 45779}, 45786, 45788, {f: 4, c: 45790}, 45795, 45799,
   7276     {f: 2, c: 45801}, {f: 3, c: 45808}, 45814, {f: 3, c: 45820},
   7277     {f: 2, c: 45826}, {f: 3, c: 45829}, {f: 7, c: 45833}, 45842,
   7278     {f: 6, c: 45846}, {f: 55, c: 45853}, 45911, {f: 2, c: 45913}, 45917,
   7279     {f: 4, c: 45920}, 45926, 45928, 45930, {f: 2, c: 45932}, 45935,
   7280     {f: 2, c: 45938}, {f: 3, c: 45941}, {f: 7, c: 45945}, 45954,
   7281     {f: 6, c: 45958}, {f: 3, c: 45965}, {f: 3, c: 45969}, {f: 11, c: 45973},
   7282     {f: 6, c: 45986}, {f: 3, c: 45993}, {f: 23, c: 45997}, {f: 2, c: 46022},
   7283     {f: 2, c: 46025}, 46029, 46031, {f: 3, c: 46033}, 46038, 46040, 46042,
   7284     46044, {f: 2, c: 46046}, {f: 3, c: 46049}, {f: 3, c: 46053},
   7285     {f: 19, c: 46057}, {f: 19, c: 46077}, {f: 7, c: 46097}, {f: 3, c: 46105},
   7286     {f: 3, c: 46109}, {f: 7, c: 46113}, 46122, {f: 8, c: 46124},
   7287     {f: 27, c: 46133}, {f: 2, c: 46162}, {f: 3, c: 46165}, {f: 7, c: 46169},
   7288     46178, 46180, {f: 6, c: 46182}, {f: 19, c: 46189}, {f: 7, c: 46209},
   7289     {f: 20, c: 46217}, {f: 6, c: 46238}, {f: 3, c: 46245}, {f: 3, c: 46249},
   7290     {f: 8, c: 46253}, 46262, 46264, {f: 6, c: 46266}, {f: 3, c: 46273},
   7291     {f: 3, c: 46277}, {f: 7, c: 46281}, {f: 4, c: 46289}, {f: 6, c: 46294},
   7292     {f: 2, c: 46302}, {f: 2, c: 46305}, 46309, {f: 5, c: 46311}, 46318, 46320,
   7293     {f: 6, c: 46322}, {f: 27, c: 46329}, {f: 2, c: 46358}, {f: 2, c: 46361},
   7294     {f: 7, c: 46365}, 46374, {f: 5, c: 46379}, {f: 2, c: 46386},
   7295     {f: 3, c: 46389}, {f: 7, c: 46393}, 46402, {f: 5, c: 46406},
   7296     {f: 2, c: 46414}, {f: 3, c: 46417}, {f: 7, c: 46421}, 46430,
   7297     {f: 62, c: 46434}, {f: 2, c: 46498}, {f: 3, c: 46501}, 46505,
   7298     {f: 4, c: 46508}, 46514, {f: 5, c: 46518}, {f: 2, c: 46526},
   7299     {f: 3, c: 46529}, {f: 7, c: 46533}, 46542, {f: 6, c: 46546},
   7300     {f: 19, c: 46553}, {f: 35, c: 46573}, {f: 2, c: 46610}, {f: 3, c: 46613},
   7301     {f: 12, c: 46617}, {f: 6, c: 46630}, {f: 7, c: 46637}, {f: 19, c: 46645},
   7302     {f: 27, c: 46665}, {f: 3, c: 46693}, {f: 51, c: 46697}, {f: 2, c: 46750},
   7303     {f: 3, c: 46753}, {f: 6, c: 46757}, {f: 4, c: 46765}, {f: 34, c: 46770},
   7304     {f: 27, c: 46805}, {f: 3, c: 46833}, {f: 3, c: 46837}, {f: 7, c: 46841},
   7305     {f: 3, c: 46850}, {f: 34, c: 46854}, {f: 2, c: 46890}, {f: 2, c: 46893},
   7306     {f: 7, c: 46897}, 46906, {f: 8, c: 46908}, {f: 3, c: 46917},
   7307     {f: 3, c: 46921}, {f: 7, c: 46925}, {f: 10, c: 46934}, {f: 3, c: 46945},
   7308     {f: 3, c: 46949}, {f: 7, c: 46953}, 46962, 46964, {f: 6, c: 46966},
   7309     {f: 2, c: 46974}, {f: 3, c: 46977}, {f: 7, c: 46981}, 46990,
   7310     {f: 3, c: 46995}, {f: 2, c: 47002}, {f: 3, c: 47005}, {f: 7, c: 47009},
   7311     47018, {f: 6, c: 47022}, {f: 2, c: 47030}, {f: 14, c: 47033}, 47048,
   7312     {f: 34, c: 47050}, {f: 2, c: 47086}, {f: 3, c: 47089}, {f: 7, c: 47093},
   7313     47102, {f: 5, c: 47106}, {f: 2, c: 47114}, {f: 3, c: 47117},
   7314     {f: 7, c: 47121}, 47130, 47132, {f: 6, c: 47134}, {f: 2, c: 47142},
   7315     {f: 3, c: 47145}, {f: 7, c: 47149}, 47158, {f: 6, c: 47162},
   7316     {f: 3, c: 47169}, {f: 12, c: 47173}, 47186, {f: 8, c: 47188},
   7317     {f: 2, c: 47198}, {f: 3, c: 47201}, {f: 7, c: 47205}, 47214, 47216,
   7318     {f: 6, c: 47218}, {f: 3, c: 47225}, {f: 16, c: 47229}, {f: 26, c: 47246},
   7319     {f: 7, c: 47273}, {f: 3, c: 47281}, {f: 3, c: 47285}, {f: 7, c: 47289},
   7320     47298, 47300, {f: 6, c: 47302}, {f: 3, c: 47309}, {f: 3, c: 47313},
   7321     {f: 8, c: 47317}, 47326, 47328, {f: 6, c: 47330}, {f: 2, c: 47338},
   7322     {f: 3, c: 47341}, {f: 7, c: 47345}, 47354, 47356, {f: 6, c: 47358},
   7323     {f: 19, c: 47365}, {f: 7, c: 47385}, {f: 27, c: 47393}, {f: 2, c: 47422},
   7324     {f: 3, c: 47425}, {f: 7, c: 47429}, {f: 2, c: 47437}, 47440,
   7325     {f: 6, c: 47442}, {f: 2, c: 47450}, {f: 3, c: 47453}, {f: 7, c: 47457},
   7326     47466, 47468, {f: 6, c: 47470}, {f: 2, c: 47478}, {f: 3, c: 47481},
   7327     {f: 7, c: 47485}, 47494, 47496, {f: 2, c: 47499}, {f: 29, c: 47503},
   7328     {f: 2, c: 47534}, {f: 3, c: 47537}, {f: 7, c: 47541}, 47550, 47552,
   7329     {f: 6, c: 47554}, {f: 2, c: 47562}, 47565, {f: 5, c: 47571}, 47578, 47580,
   7330     {f: 2, c: 47583}, 47586, {f: 2, c: 47590}, {f: 3, c: 47593},
   7331     {f: 7, c: 47597}, 47606, {f: 5, c: 47611}, {f: 6, c: 47618},
   7332     {f: 12, c: 47625}, {f: 34, c: 47638}, {f: 2, c: 47674}, {f: 3, c: 47677},
   7333     47681, {f: 5, c: 47683}, 47690, 47692, {f: 4, c: 47695}, {f: 2, c: 47702},
   7334     {f: 3, c: 47705}, {f: 7, c: 47709}, 47718, {f: 6, c: 47722},
   7335     {f: 2, c: 47730}, {f: 3, c: 47733}, {f: 10, c: 47737}, 47750,
   7336     {f: 4, c: 47752}, {f: 27, c: 47757}, 47786, {f: 3, c: 47789}, 47793,
   7337     {f: 5, c: 47795}, 47802, 47804, {f: 6, c: 47806}, {f: 3, c: 47813},
   7338     {f: 15, c: 47817}, {f: 34, c: 47834}, {f: 3, c: 47869}, {f: 3, c: 47873},
   7339     {f: 8, c: 47877}, 47886, 47888, {f: 6, c: 47890}, {f: 3, c: 47897},
   7340     {f: 3, c: 47901}, {f: 8, c: 47905}, 47914, {f: 8, c: 47916}, 47927,
   7341     {f: 2, c: 47929}, {f: 5, c: 47935}, 47942, 47944, {f: 3, c: 47946}, 47950,
   7342     {f: 3, c: 47953}, {f: 3, c: 47957}, {f: 8, c: 47961}, 47970,
   7343     {f: 8, c: 47972}, {f: 27, c: 47981}, {f: 3, c: 48009}, {f: 3, c: 48013},
   7344     {f: 19, c: 48017}, {f: 3, c: 48037}, {f: 3, c: 48041}, {f: 7, c: 48045},
   7345     {f: 2, c: 48053}, {f: 8, c: 48056}, {f: 3, c: 48065}, {f: 3, c: 48069},
   7346     {f: 7, c: 48073}, {f: 2, c: 48081}, {f: 36, c: 48084}, {f: 2, c: 48122},
   7347     {f: 2, c: 48125}, 48129, {f: 5, c: 48131}, 48138, 48142, 48144,
   7348     {f: 2, c: 48146}, {f: 2, c: 48153}, {f: 4, c: 48160}, 48166, 48168,
   7349     {f: 3, c: 48170}, {f: 2, c: 48174}, {f: 2, c: 48178}, {f: 3, c: 48181},
   7350     {f: 7, c: 48185}, 48194, {f: 3, c: 48198}, {f: 2, c: 48202},
   7351     {f: 2, c: 48206}, {f: 12, c: 48209}, {f: 38, c: 48222}, {f: 2, c: 48262},
   7352     {f: 2, c: 48265}, 48269, {f: 5, c: 48271}, 48278, 48280, {f: 5, c: 48283},
   7353     {f: 2, c: 48290}, {f: 2, c: 48293}, {f: 7, c: 48297}, 48306,
   7354     {f: 6, c: 48310}, {f: 2, c: 48318}, {f: 3, c: 48321}, {f: 8, c: 48325},
   7355     48334, {f: 3, c: 48338}, {f: 2, c: 48342}, {f: 3, c: 48345},
   7356     {f: 23, c: 48349}, 48375, {f: 3, c: 48377}, {f: 7, c: 48381}, 48390, 48392,
   7357     {f: 6, c: 48394}, {f: 3, c: 48401}, {f: 15, c: 48405}, {f: 7, c: 48421},
   7358     {f: 19, c: 48429}, {f: 7, c: 48449}, {f: 2, c: 48458}, {f: 3, c: 48461},
   7359     {f: 7, c: 48465}, {f: 10, c: 48474}, {f: 3, c: 48485}, {f: 23, c: 48489},
   7360     {f: 2, c: 48514}, {f: 2, c: 48517}, {f: 5, c: 48523}, 48530, 48532,
   7361     {f: 3, c: 48534}, 48539, {f: 7, c: 48541}, {f: 11, c: 48549},
   7362     {f: 7, c: 48561}, {f: 27, c: 48569}, {f: 2, c: 48598}, {f: 3, c: 48601},
   7363     {f: 12, c: 48605}, {f: 6, c: 48618}, {f: 3, c: 48625}, {f: 3, c: 48629},
   7364     {f: 7, c: 48633}, {f: 2, c: 48641}, 48644, {f: 6, c: 48646},
   7365     {f: 2, c: 48654}, {f: 3, c: 48657}, {f: 7, c: 48661}, 48670,
   7366     {f: 36, c: 48672}, {f: 2, c: 48710}, {f: 3, c: 48713}, 48717,
   7367     {f: 5, c: 48719}, 48726, 48728, {f: 4, c: 48732}, {f: 2, c: 48738},
   7368     {f: 3, c: 48741}, 48745, {f: 5, c: 48747}, 48754, {f: 5, c: 48758},
   7369     {f: 2, c: 48766}, {f: 3, c: 48769}, {f: 7, c: 48773}, 48782,
   7370     {f: 6, c: 48786}, {f: 14, c: 48794}, {f: 39, c: 48809}, {f: 2, c: 48850},
   7371     {f: 2, c: 48853}, {f: 7, c: 48857}, {f: 2, c: 48865}, {f: 6, c: 48870},
   7372     {f: 20, c: 48877}, {f: 6, c: 48898}, {f: 14, c: 48906}, 48922,
   7373     {f: 34, c: 48926}, {f: 2, c: 48962}, {f: 3, c: 48965}, {f: 7, c: 48969},
   7374     {f: 3, c: 48978}, {f: 62, c: 48982}, {f: 27, c: 49045}, {f: 20, c: 49073},
   7375     {f: 6, c: 49094}, {f: 2, c: 49102}, {f: 3, c: 49105}, {f: 7, c: 49109},
   7376     {f: 2, c: 49117}, 49120, {f: 90, c: 49122}, {f: 20, c: 49213},
   7377     {f: 6, c: 49234}, {f: 3, c: 49241}, {f: 3, c: 49245}, {f: 7, c: 49249},
   7378     {f: 38, c: 49258}, {f: 2, c: 49298}, {f: 3, c: 49301}, {f: 7, c: 49305},
   7379     49314, 49316, {f: 6, c: 49318}, 49326, {f: 2, c: 49329}, {f: 5, c: 49335},
   7380     49342, {f: 3, c: 49346}, {f: 2, c: 49350}, {f: 2, c: 49354},
   7381     {f: 3, c: 49357}, {f: 7, c: 49361}, 49370, {f: 6, c: 49374},
   7382     {f: 2, c: 49382}, {f: 3, c: 49385}, {f: 7, c: 49389}, 49398, 49400,
   7383     {f: 6, c: 49402}, {f: 3, c: 49409}, {f: 3, c: 49413}, {f: 7, c: 49417},
   7384     {f: 4, c: 49425}, {f: 6, c: 49430}, {f: 2, c: 49441}, 49445,
   7385     {f: 4, c: 49448}, 49454, {f: 4, c: 49458}, 49463, {f: 2, c: 49466},
   7386     {f: 3, c: 49469}, {f: 7, c: 49473}, 49482, {f: 6, c: 49486},
   7387     {f: 2, c: 49494}, {f: 3, c: 49497}, {f: 7, c: 49501}, 49510,
   7388     {f: 6, c: 49514}, {f: 3, c: 49521}, {f: 3, c: 49525}, {f: 12, c: 49529},
   7389     {f: 6, c: 49542}, 49551, {f: 3, c: 49553}, 49557, {f: 5, c: 49559}, 49566,
   7390     49568, {f: 3, c: 49570}, {f: 2, c: 49574}, {f: 2, c: 49578},
   7391     {f: 3, c: 49581}, {f: 12, c: 49585}, {f: 6, c: 49598}, {f: 3, c: 49605},
   7392     {f: 3, c: 49609}, {f: 7, c: 49613}, {f: 2, c: 49621}, {f: 7, c: 49625},
   7393     {f: 3, c: 49633}, {f: 3, c: 49637}, {f: 7, c: 49641}, 49650,
   7394     {f: 8, c: 49652}, {f: 2, c: 49662}, {f: 3, c: 49665}, {f: 7, c: 49669},
   7395     49678, 49680, {f: 6, c: 49682}, {f: 2, c: 49690}, {f: 2, c: 49693},
   7396     {f: 7, c: 49697}, 49706, 49708, 49710, 49712, 49715, {f: 19, c: 49717},
   7397     {f: 7, c: 49737}, {f: 2, c: 49746}, {f: 3, c: 49749}, {f: 7, c: 49753},
   7398     {f: 4, c: 49761}, {f: 6, c: 49766}, {f: 2, c: 49774}, {f: 3, c: 49777},
   7399     {f: 7, c: 49781}, 49790, 49792, {f: 6, c: 49794}, {f: 6, c: 49802},
   7400     {f: 7, c: 49809}, {f: 2, c: 49817}, 49820, {f: 6, c: 49822},
   7401     {f: 2, c: 49830}, {f: 3, c: 49833}, {f: 6, c: 49838}, 49846, 49848,
   7402     {f: 34, c: 49850}, {f: 2, c: 49886}, {f: 2, c: 49889}, {f: 6, c: 49893},
   7403     49902, 49904, {f: 4, c: 49906}, 49911, 49914, {f: 3, c: 49917},
   7404     {f: 7, c: 49921}, {f: 2, c: 49930}, {f: 5, c: 49934}, {f: 2, c: 49942},
   7405     {f: 3, c: 49945}, {f: 7, c: 49949}, {f: 2, c: 49958}, {f: 27, c: 49962},
   7406     {f: 34, c: 49990}, {f: 2, c: 50026}, {f: 3, c: 50029}, 50033,
   7407     {f: 5, c: 50035}, {f: 2, c: 50042}, {f: 6, c: 50046}, {f: 3, c: 50053},
   7408     {f: 3, c: 50057}, {f: 51, c: 50061}, {f: 23, c: 50113}, {f: 2, c: 50138},
   7409     {f: 2, c: 50141}, 50145, {f: 5, c: 50147}, {f: 3, c: 50154},
   7410     {f: 6, c: 50158}, {f: 2, c: 50166}, {f: 15, c: 50169}, {f: 7, c: 50185},
   7411     {f: 19, c: 50193}, {f: 7, c: 50213}, {f: 3, c: 50221}, {f: 3, c: 50225},
   7412     {f: 7, c: 50229}, {f: 10, c: 50238}, {f: 27, c: 50249}, {f: 2, c: 50278},
   7413     {f: 3, c: 50281}, {f: 7, c: 50285}, {f: 3, c: 50294}, {f: 6, c: 50298},
   7414     {f: 19, c: 50305}, {f: 7, c: 50325}, {f: 27, c: 50333}, {f: 3, c: 50361},
   7415     {f: 44, c: 50365}, {f: 6, c: 50410}, {f: 2, c: 50418}, {f: 3, c: 50421},
   7416     50425, {f: 4, c: 50427}, {f: 10, c: 50434}, {f: 3, c: 50445},
   7417     {f: 3, c: 50449}, {f: 7, c: 50453}, {f: 11, c: 50461}, {f: 2, c: 50474},
   7418     {f: 3, c: 50477}, {f: 7, c: 50481}, 50490, 50492, {f: 6, c: 50494},
   7419     {f: 2, c: 50502}, 50507, {f: 4, c: 50511}, 50518, {f: 3, c: 50522}, 50527,
   7420     {f: 2, c: 50530}, {f: 3, c: 50533}, {f: 7, c: 50537}, 50546,
   7421     {f: 6, c: 50550}, {f: 2, c: 50558}, {f: 3, c: 50561}, {f: 2, c: 50565},
   7422     {f: 4, c: 50568}, 50574, 50576, {f: 3, c: 50578}, 50582, {f: 3, c: 50585},
   7423     {f: 3, c: 50589}, {f: 8, c: 50593}, {f: 10, c: 50602}, {f: 2, c: 50614},
   7424     50618, {f: 5, c: 50623}, 50635, 50637, 50639, {f: 2, c: 50642},
   7425     {f: 3, c: 50645}, {f: 7, c: 50649}, 50658, 50660, {f: 6, c: 50662}, 50671,
   7426     {f: 3, c: 50673}, 50677, {f: 4, c: 50680}, {f: 3, c: 50690},
   7427     {f: 3, c: 50697}, {f: 3, c: 50701}, {f: 7, c: 50705}, 50714,
   7428     {f: 7, c: 50717}, {f: 2, c: 50726}, {f: 3, c: 50729}, 50735,
   7429     {f: 2, c: 50737}, 50742, 50744, 50746, {f: 4, c: 50748}, {f: 2, c: 50754},
   7430     {f: 3, c: 50757}, {f: 7, c: 50761}, 50770, {f: 6, c: 50774},
   7431     {f: 2, c: 50782}, {f: 11, c: 50785}, {f: 2, c: 50797}, 50800,
   7432     {f: 6, c: 50802}, {f: 2, c: 50810}, {f: 3, c: 50813}, {f: 7, c: 50817},
   7433     50826, 50828, {f: 6, c: 50830}, {f: 2, c: 50838}, {f: 3, c: 50841},
   7434     {f: 7, c: 50845}, 50854, 50856, {f: 6, c: 50858}, {f: 2, c: 50866},
   7435     {f: 3, c: 50869}, {f: 5, c: 50875}, 50882, 50884, {f: 6, c: 50886},
   7436     {f: 2, c: 50894}, {f: 3, c: 50897}, {f: 7, c: 50901}, {f: 2, c: 50910},
   7437     {f: 6, c: 50914}, {f: 2, c: 50922}, {f: 3, c: 50925}, {f: 7, c: 50929},
   7438     {f: 3, c: 50938}, {f: 6, c: 50942}, {f: 2, c: 50950}, {f: 3, c: 50953},
   7439     {f: 7, c: 50957}, 50966, 50968, {f: 6, c: 50970}, {f: 2, c: 50978},
   7440     {f: 3, c: 50981}, {f: 7, c: 50985}, 50994, 50996, 50998, {f: 4, c: 51000},
   7441     {f: 2, c: 51006}, {f: 3, c: 51009}, {f: 5, c: 51013}, 51019, 51022, 51024,
   7442     {f: 3, c: 51033}, {f: 3, c: 51037}, {f: 7, c: 51041}, {f: 2, c: 51049},
   7443     {f: 8, c: 51052}, {f: 2, c: 51062}, {f: 3, c: 51065}, {f: 4, c: 51071},
   7444     51078, {f: 3, c: 51083}, 51087, {f: 2, c: 51090}, 51093, 51097,
   7445     {f: 5, c: 51099}, 51106, {f: 5, c: 51111}, {f: 2, c: 51118},
   7446     {f: 3, c: 51121}, {f: 7, c: 51125}, 51134, {f: 6, c: 51138},
   7447     {f: 2, c: 51146}, 51149, 51151, {f: 7, c: 51153}, {f: 4, c: 51161},
   7448     {f: 6, c: 51166}, {f: 3, c: 51173}, {f: 3, c: 51177}, {f: 19, c: 51181},
   7449     {f: 2, c: 51202}, {f: 3, c: 51205}, 51209, {f: 5, c: 51211}, 51218, 51220,
   7450     {f: 5, c: 51223}, {f: 2, c: 51230}, {f: 3, c: 51233}, {f: 7, c: 51237},
   7451     51246, 51248, {f: 6, c: 51250}, {f: 3, c: 51257}, {f: 3, c: 51261},
   7452     {f: 7, c: 51265}, {f: 2, c: 51274}, {f: 6, c: 51278}, {f: 27, c: 51285},
   7453     {f: 2, c: 51314}, {f: 3, c: 51317}, 51321, {f: 5, c: 51323}, 51330, 51332,
   7454     {f: 3, c: 51336}, {f: 6, c: 51342}, {f: 8, c: 51349}, 51358, 51360,
   7455     {f: 6, c: 51362}, {f: 19, c: 51369}, {f: 6, c: 51390}, {f: 3, c: 51397},
   7456     {f: 3, c: 51401}, {f: 7, c: 51405}, 51414, 51416, {f: 6, c: 51418},
   7457     {f: 2, c: 51426}, {f: 16, c: 51429}, {f: 6, c: 51446}, {f: 2, c: 51454},
   7458     {f: 3, c: 51457}, {f: 5, c: 51463}, 51470, 51472, {f: 6, c: 51474},
   7459     {f: 19, c: 51481}, {f: 7, c: 51501}, {f: 27, c: 51509}, {f: 2, c: 51538},
   7460     {f: 3, c: 51541}, {f: 7, c: 51545}, 51554, {f: 8, c: 51556},
   7461     {f: 3, c: 51565}, {f: 3, c: 51569}, {f: 7, c: 51573}, {f: 11, c: 51581},
   7462     {f: 2, c: 51594}, {f: 3, c: 51597}, {f: 7, c: 51601}, 51610, 51612,
   7463     {f: 34, c: 51614}, {f: 2, c: 51650}, {f: 2, c: 51653}, 51657,
   7464     {f: 5, c: 51659}, 51666, 51668, {f: 2, c: 51671}, 51675, {f: 2, c: 51678},
   7465     51681, 51683, {f: 2, c: 51685}, {f: 4, c: 51688}, 51694, {f: 6, c: 51698},
   7466     {f: 2, c: 51706}, {f: 3, c: 51709}, {f: 7, c: 51713}, 51722,
   7467     {f: 6, c: 51726}, {f: 3, c: 51733}, {f: 16, c: 51737}, {f: 34, c: 51754},
   7468     {f: 2, c: 51790}, {f: 3, c: 51793}, {f: 7, c: 51797}, 51806,
   7469     {f: 6, c: 51810}, {f: 20, c: 51817}, {f: 6, c: 51838}, {f: 19, c: 51845},
   7470     {f: 35, c: 51865}, {f: 2, c: 51902}, {f: 3, c: 51905}, {f: 7, c: 51909},
   7471     51918, 51920, 51922, {f: 4, c: 51924}, {f: 6, c: 51930}, {f: 11, c: 51937},
   7472     {f: 7, c: 51949}, {f: 19, c: 51957}, {f: 7, c: 51977}, {f: 3, c: 51985},
   7473     {f: 3, c: 51989}, {f: 7, c: 51993}, {f: 31, c: 52002}, {f: 6, c: 52034},
   7474     {f: 2, c: 52042}, {f: 3, c: 52045}, {f: 7, c: 52049}, {f: 3, c: 52058},
   7475     {f: 6, c: 52062}, {f: 19, c: 52069}, {f: 34, c: 52090}, {f: 27, c: 52125},
   7476     {f: 27, c: 52153}, {f: 15, c: 52181}, {f: 2, c: 52197}, 52200,
   7477     {f: 34, c: 52202}, {f: 2, c: 52238}, {f: 3, c: 52241}, {f: 7, c: 52245},
   7478     {f: 3, c: 52254}, {f: 4, c: 52259}, {f: 2, c: 52266}, 52269, 52271,
   7479     {f: 7, c: 52273}, 52282, {f: 5, c: 52287}, {f: 2, c: 52294},
   7480     {f: 3, c: 52297}, {f: 7, c: 52301}, 52310, {f: 6, c: 52314},
   7481     {f: 3, c: 52321}, 52325, 52327, {f: 7, c: 52329}, {f: 4, c: 52337},
   7482     {f: 34, c: 52342}, {f: 2, c: 52378}, {f: 3, c: 52381}, {f: 7, c: 52385},
   7483     52394, {f: 6, c: 52398}, {f: 2, c: 52406}, {f: 3, c: 52409},
   7484     {f: 7, c: 52413}, 52422, 52424, {f: 6, c: 52426}, {f: 3, c: 52433},
   7485     {f: 15, c: 52437}, {f: 7, c: 52453}, {f: 3, c: 52461}, {f: 16, c: 52465},
   7486     {f: 6, c: 52482}, {f: 2, c: 52490}, {f: 3, c: 52493}, {f: 7, c: 52497},
   7487     52506, 52508, {f: 6, c: 52510}, {f: 3, c: 52517}, {f: 3, c: 52521},
   7488     {f: 12, c: 52525}, {f: 34, c: 52538}, {f: 3, c: 52573}, {f: 3, c: 52577},
   7489     {f: 7, c: 52581}, 52590, 52592, {f: 6, c: 52594}, {f: 15, c: 52601},
   7490     {f: 11, c: 52617}, {f: 2, c: 52630}, {f: 3, c: 52633}, {f: 7, c: 52637},
   7491     52646, 52648, {f: 6, c: 52650}, {f: 19, c: 52657}, {f: 7, c: 52677},
   7492     {f: 3, c: 52685}, {f: 23, c: 52689}, {f: 3, c: 52713}, {f: 3, c: 52717},
   7493     {f: 7, c: 52721}, 52730, 52732, {f: 6, c: 52734}, {f: 3, c: 52741},
   7494     {f: 3, c: 52745}, {f: 7, c: 52749}, {f: 4, c: 52757}, {f: 6, c: 52762},
   7495     {f: 2, c: 52770}, {f: 3, c: 52773}, {f: 7, c: 52777}, 52786, 52788,
   7496     {f: 34, c: 52790}, {f: 2, c: 52826}, {f: 2, c: 52829}, {f: 6, c: 52834},
   7497     52842, 52844, {f: 6, c: 52846}, {f: 2, c: 52854}, {f: 3, c: 52857},
   7498     {f: 7, c: 52861}, 52870, 52872, {f: 6, c: 52874}, {f: 2, c: 52882},
   7499     {f: 3, c: 52885}, {f: 7, c: 52889}, 52898, {f: 6, c: 52902},
   7500     {f: 19, c: 52910}, {f: 34, c: 52930}, {f: 2, c: 52966}, {f: 2, c: 52969},
   7501     {f: 7, c: 52973}, 52982, {f: 6, c: 52986}, {f: 2, c: 52994},
   7502     {f: 3, c: 52997}, {f: 7, c: 53001}, 53010, 53012, {f: 6, c: 53014},
   7503     {f: 3, c: 53021}, {f: 3, c: 53025}, {f: 7, c: 53029}, 53038,
   7504     {f: 6, c: 53042}, {f: 27, c: 53049}, {f: 2, c: 53078}, {f: 3, c: 53081},
   7505     {f: 7, c: 53085}, 53094, 53096, {f: 6, c: 53098}, {f: 2, c: 53106},
   7506     {f: 3, c: 53109}, {f: 7, c: 53113}, {f: 4, c: 53121}, {f: 6, c: 53126},
   7507     {f: 20, c: 53133}, {f: 6, c: 53154}, {f: 7, c: 53161}, {f: 19, c: 53169},
   7508     {f: 27, c: 53189}, {f: 2, c: 53218}, {f: 3, c: 53221}, {f: 7, c: 53225},
   7509     53234, 53236, {f: 6, c: 53238}, {f: 3, c: 53245}, {f: 3, c: 53249},
   7510     {f: 12, c: 53253}, {f: 6, c: 53266}, {f: 20, c: 53273}, {f: 6, c: 53294},
   7511     {f: 2, c: 53302}, {f: 3, c: 53305}, {f: 7, c: 53309}, 53318, 53320,
   7512     {f: 6, c: 53322}, {f: 3, c: 53329}, {f: 3, c: 53333}, {f: 7, c: 53337},
   7513     {f: 11, c: 53345}, {f: 2, c: 53358}, {f: 3, c: 53361}, {f: 7, c: 53365},
   7514     {f: 3, c: 53374}, {f: 34, c: 53378}, {f: 2, c: 53414}, {f: 3, c: 53417},
   7515     {f: 7, c: 53421}, 53430, 53432, {f: 6, c: 53434}, {f: 2, c: 53442},
   7516     {f: 3, c: 53445}, {f: 6, c: 53450}, 53458, {f: 6, c: 53462},
   7517     {f: 2, c: 53470}, {f: 3, c: 53473}, {f: 7, c: 53477}, 53486,
   7518     {f: 6, c: 53490}, {f: 20, c: 53497}, {f: 34, c: 53518}, {f: 2, c: 53554},
   7519     {f: 3, c: 53557}, 53561, {f: 5, c: 53563}, 53570, {f: 6, c: 53574},
   7520     {f: 2, c: 53582}, {f: 3, c: 53585}, {f: 7, c: 53589}, 53598, 53600,
   7521     {f: 6, c: 53602}, {f: 3, c: 53609}, {f: 15, c: 53613}, {f: 7, c: 53629},
   7522     {f: 3, c: 53637}, {f: 23, c: 53641}, {f: 2, c: 53666}, {f: 3, c: 53669},
   7523     {f: 7, c: 53673}, 53682, 53684, {f: 4, c: 53686}, 53691, {f: 3, c: 53693},
   7524     {f: 23, c: 53697}, {f: 27, c: 53721}, {f: 3, c: 53749}, {f: 14, c: 53753},
   7525     53768, {f: 6, c: 53770}, {f: 27, c: 53777}, {f: 2, c: 53806},
   7526     {f: 3, c: 53809}, {f: 7, c: 53813}, 53822, 53824, {f: 6, c: 53826},
   7527     {f: 19, c: 53833}, {f: 7, c: 53853}, {f: 27, c: 53861}, {f: 2, c: 53890},
   7528     {f: 3, c: 53893}, {f: 7, c: 53897}, {f: 3, c: 53906}, {f: 6, c: 53910},
   7529     {f: 3, c: 53917}, {f: 3, c: 53921}, {f: 7, c: 53925}, {f: 4, c: 53933},
   7530     {f: 6, c: 53938}, {f: 2, c: 53946}, {f: 2, c: 53949}, 53953,
   7531     {f: 5, c: 53955}, 53962, {f: 8, c: 53964}, {f: 3, c: 53973},
   7532     {f: 3, c: 53977}, {f: 7, c: 53981}, {f: 10, c: 53990}, {f: 2, c: 54002},
   7533     {f: 3, c: 54005}, {f: 7, c: 54009}, 54018, 54020, {f: 6, c: 54022}, 54031,
   7534     {f: 3, c: 54033}, 54037, {f: 5, c: 54039}, 54046, {f: 3, c: 54050},
   7535     {f: 2, c: 54054}, {f: 2, c: 54058}, {f: 3, c: 54061}, {f: 7, c: 54065},
   7536     54074, {f: 6, c: 54078}, {f: 54, c: 54086}, {f: 2, c: 54142},
   7537     {f: 3, c: 54145}, {f: 7, c: 54149}, 54158, {f: 6, c: 54162},
   7538     {f: 2, c: 54170}, {f: 3, c: 54173}, {f: 7, c: 54177}, 54186, 54188,
   7539     {f: 6, c: 54190}, {f: 3, c: 54197}, {f: 3, c: 54201}, {f: 7, c: 54205},
   7540     {f: 2, c: 54214}, {f: 6, c: 54218}, {f: 7, c: 54225}, {f: 8, c: 54233},
   7541     54242, {f: 8, c: 54244}, {f: 2, c: 54254}, {f: 3, c: 54257},
   7542     {f: 7, c: 54261}, 54270, 54272, {f: 6, c: 54274}, {f: 20, c: 54281},
   7543     {f: 34, c: 54302}, {f: 3, c: 54337}, {f: 23, c: 54341}, {f: 3, c: 54365},
   7544     {f: 3, c: 54369}, {f: 8, c: 54373}, 54382, {f: 8, c: 54384},
   7545     {f: 2, c: 54394}, {f: 2, c: 54397}, 54401, {f: 5, c: 54403}, 54410, 54412,
   7546     {f: 6, c: 54414}, {f: 20, c: 54421}, {f: 34, c: 54442}, {f: 3, c: 54477},
   7547     {f: 3, c: 54481}, {f: 7, c: 54485}, {f: 2, c: 54493}, {f: 8, c: 54496},
   7548     {f: 3, c: 54505}, {f: 3, c: 54509}, {f: 7, c: 54513}, {f: 2, c: 54521},
   7549     54524, {f: 6, c: 54526}, {f: 3, c: 54533}, {f: 3, c: 54537},
   7550     {f: 7, c: 54541}, 54550, {f: 36, c: 54552}, {f: 2, c: 54590},
   7551     {f: 3, c: 54593}, {f: 7, c: 54597}, 54606, 54608, {f: 6, c: 54610},
   7552     {f: 2, c: 54618}, {f: 3, c: 54621}, {f: 4, c: 54625}, {f: 2, c: 54630},
   7553     54634, 54636, {f: 6, c: 54638}, {f: 2, c: 54646}, {f: 3, c: 54649},
   7554     {f: 7, c: 54653}, 54662, {f: 6, c: 54666}, {f: 20, c: 54673},
   7555     {f: 34, c: 54694}, {f: 2, c: 54730}, {f: 3, c: 54733}, 54737,
   7556     {f: 5, c: 54739}, 54746, 54748, {f: 6, c: 54750}, {f: 2, c: 54758},
   7557     {f: 3, c: 54761}, {f: 7, c: 54765}, 54774, 54776, {f: 6, c: 54778},
   7558     {f: 2, c: 54786}, {f: 3, c: 54789}, {f: 7, c: 54793}, 54802,
   7559     {f: 6, c: 54806}, {f: 3, c: 54813}, {f: 3, c: 54817}, {f: 8, c: 54821},
   7560     {f: 10, c: 54830}, {f: 2, c: 54842}, {f: 3, c: 54845}, {f: 4, c: 54849},
   7561     {f: 2, c: 54854}, 54858, 54860, {f: 3, c: 54862}, {f: 2, c: 54866},
   7562     {f: 2, c: 54870}, {f: 3, c: 54873}, {f: 10, c: 54877}, 54888,
   7563     {f: 6, c: 54890}, {f: 2, c: 54898}, {f: 14, c: 54901}, 54916,
   7564     {f: 6, c: 54918}, {f: 2, c: 54926}, {f: 3, c: 54929}, {f: 8, c: 54933},
   7565     54942, 54944, {f: 6, c: 54946}, {f: 3, c: 54953}, {f: 3, c: 54957},
   7566     {f: 8, c: 54961}, 54970, {f: 8, c: 54972}, {f: 2, c: 54982},
   7567     {f: 3, c: 54985}, {f: 4, c: 54989}, {f: 2, c: 54994}, {f: 2, c: 54997},
   7568     55000, {f: 6, c: 55002}, {f: 3, c: 55009}, {f: 3, c: 55013},
   7569     {f: 7, c: 55017}, {f: 4, c: 55025}, {f: 6, c: 55030}, {f: 2, c: 55038},
   7570     {f: 3, c: 55041}, {f: 12, c: 55045}, {f: 6, c: 55058}, {f: 2, c: 55066},
   7571     {f: 3, c: 55069}, {f: 7, c: 55073}, 55082, 55084, {f: 6, c: 55086},
   7572     {f: 2, c: 55094}, {f: 3, c: 55097}, {f: 7, c: 55101}, {f: 2, c: 55109},
   7573     55112, {f: 6, c: 55114}, {f: 2, c: 55122}, 55125, {f: 6, c: 55130}, 55138,
   7574     55140, {f: 3, c: 55142}, {f: 2, c: 55146}, {f: 3, c: 55149},
   7575     {f: 3, c: 55153}, {f: 7, c: 55157}, {f: 3, c: 55166}, {f: 6, c: 55170},
   7576     {f: 2, c: 55178}, {f: 3, c: 55181}, {f: 7, c: 55185}, 55194, 55196,
   7577     {f: 6, c: 55198}],
   7578   'Adobe-CNS1': [{f: 95, c: 32}, {s: 3}, 12288, 65292, {f: 2, c: 12289}, 65294,
   7579     8226, 65307, 65306, 65311, 65281, 65072, 8230, 8229, 65104, 65380, 65106,
   7580     183, {f: 4, c: 65108}, 65372, 8211, 65073, 8212, {s: 4}, {f: 2, c: 65288},
   7581     {f: 2, c: 65077}, 65371, 65373, {f: 2, c: 65079}, {f: 2, c: 12308},
   7582     {f: 2, c: 65081}, {f: 2, c: 12304}, {f: 2, c: 65083}, {f: 2, c: 12298},
   7583     {f: 2, c: 65085}, {f: 2, c: 12296}, {f: 2, c: 65087}, {f: 2, c: 12300},
   7584     {f: 2, c: 65089}, {f: 2, c: 12302}, {f: 2, c: 65091}, {f: 6, c: 65113},
   7585     {f: 2, c: 8216}, {f: 2, c: 8220}, {f: 2, c: 12317}, 8245, 8242, 65283,
   7586     65286, 65290, 8251, 167, 12291, 9675, 9679, 9651, 9650, 9678, 9734, 9733,
   7587     9671, 9670, 9633, 9632, 9661, 9660, 12963, 8453, 8254, 0, 65343, 0,
   7588     {f: 2, c: 65097}, {f: 2, c: 65101}, {f: 2, c: 65099}, {f: 3, c: 65119},
   7589     65291, 65293, 215, 247, 177, 8730, 65308, 65310, 65309, {f: 2, c: 8806},
   7590     8800, 8734, 8786, 8801, {f: 5, c: 65122}, 8764, {f: 2, c: 8745}, 8869,
   7591     8736, 8735, 8895, 13266, 13265, 8747, 8750, 8757, 8756, 9792, 9794, 9793,
   7592     9737, 8593, 8595, 8594, 8592, {f: 2, c: 8598}, 8601, 8600, 8741, 8739, 0,
   7593     0, 65295, 65340, 65284, 165, 12306, {f: 2, c: 162}, 65285, 65312, 8451,
   7594     8457, {f: 3, c: 65129}, 13269, {f: 3, c: 13212}, 13262, 13217,
   7595     {f: 2, c: 13198}, 13252, 176, [20825, 58834], [20827, 58835],
   7596     [20830, 58837], [20829, 58836], 20833, 20835, 21991, [29929, 58044],
   7597     [31950, 58191], {f: 8, c: 9601}, 9615, 9614, 9613, 9612, 9611, 9610, 9609,
   7598     9532, 9524, 9516, 9508, 9500, 9620, 9472, 9474, 9621, 9484, 9488, 9492,
   7599     9496, {f: 2, c: 9581}, 9584, 9583, 9552, 9566, 9578, 9569, {f: 2, c: 9698},
   7600     9701, 9700, {f: 3, c: 9585}, {f: 10, c: 65296}, {f: 10, c: 8544},
   7601     {f: 9, c: 12321}, 0, [21316, 57443], 0, {f: 26, c: 65313},
   7602     {f: 26, c: 65345}, {f: 17, c: 913}, {f: 7, c: 931}, {f: 17, c: 945},
   7603     {f: 7, c: 963}, {f: 37, c: 12549}, 729, 714, 711, 715, [9312, 63153],
   7604     [9313, 63154], [9314, 63155], [9315, 63156], [9316, 63157], [9317, 63158],
   7605     [9318, 63159], [9319, 63160], [9320, 63161], [9321, 63162], [9332, 63163],
   7606     [9333, 63164], [9334, 63165], [9335, 63166], [9336, 63167], [9337, 63168],
   7607     [9338, 63169], [9339, 63170], [9340, 63171], [9341, 63172], [8560, 63173],
   7608     [8561, 63174], [8562, 63175], [8563, 63176], [8564, 63177], [8565, 63178],
   7609     [8566, 63179], [8567, 63180], [8568, 63181], [8569, 63182], [12033, 20008],
   7610     [12034, 20022, 63183], [12035, 20031, 63184], [12037, 20101, 63185],
   7611     [12039, 20128, 63186], [12044, 20866, 63187], [12045, 20886, 63188],
   7612     [12046, 20907, 63189], [12051, 21241, 63190], [12054, 21304, 63191],
   7613     [12057, 21353, 63192], [12059, 21430, 63193],
   7614     [12065, 12066, 22786, 22794, 63194], [12071, 23424, 63195],
   7615     [12078, 24027, 63196], [12083, 24186, 63197], [12084, 24191, 63198],
   7616     [12085, 24308], [12089, 24400, 63200], [12090, 24417, 63201],
   7617     [12097, 25908, 63202], [12102, 26080], [12135, 30098, 63204],
   7618     [12136, 30326], [12193, 36789, 63206], [12202, 38582], {f: 32, c: 9216},
   7619     9249, [12032, 19968], [12036, 20057], 19969, 19971, 20035, 20061, 20102,
   7620     [12038, 20108], [12040, 20154], [12041, 20799], [12042, 20837],
   7621     [12043, 20843], [12047, 20960], [12049, 20992], 20993, [12050, 21147],
   7622     [12052, 21269], [12055, 21313], [12056, 21340], [12060, 21448], 19977,
   7623     19979, 19976, 19978, 20011, 20024, 20961, 20037, 20040, 20063, 20062,
   7624     20110, 20129, [20800, 64012], 20995, 21242, 21315, 21449, [12061, 21475],
   7625     [12063, 22303], [12064, 22763], [12067, 22805], [12068, 22823],
   7626     [12069, 22899], [12070, 23376], 23377, 23379, [12072, 23544],
   7627     [12073, 23567], [12074, 23586], [12075, 23608], [12077, 23665], 24029,
   7628     [12079, 24037], [12080, 24049], {f: 2, c: 24050}, [12081, 24062],
   7629     [12082, 24178], [12086, 24318], [12087, 24331], [12088, 24339], 25165,
   7630     19985, 19984, 19981, 20013, 20016, 20025, 20043, 23609, 20104, 20113,
   7631     20117, 20114, 20116, 20130, 20161, 20160, 20163, {f: 2, c: 20166}, 20173,
   7632     {f: 2, c: 20170}, 20164, 20803, 20801, 20839, {f: 2, c: 20845}, 20844,
   7633     20887, 20982, {f: 3, c: 20998}, 21243, {f: 2, c: 21246}, 21270, 21305,
   7634     21320, 21319, 21317, 21342, 21380, 21451, 21450, 21453, 22764, 22825,
   7635     22827, 22826, 22829, 23380, 23569, 23588, 23610, 23663, 24052, 24187,
   7636     24319, {f: 2, c: 24340}, [12092, 24515], [12093, 25096], [12094, 25142],
   7637     [12095, 25163], 25166, [12096, 25903], [12098, 25991], [12099, 26007],
   7638     [12100, 26020], [12101, 26041], [12103, 26085], [12104, 26352],
   7639     [12105, 26376], [12106, 26408], [12107, 27424], [12108, 27490],
   7640     [12109, 27513], [12111, 27595], [12112, 27604], [12113, 27611],
   7641     [12114, 27663], [12116, 27700], [12117, 28779], [12118, 29226],
   7642     [12119, 29238], [12120, 29243], [12122, 29255], [12123, 29273],
   7643     [12124, 29275], [12125, 29356], 29579, 19993, 19990, 19989, 19988, 19992,
   7644     20027, 20045, 20047, 20046, 20197, 20184, {f: 4, c: 20180},
   7645     {f: 2, c: 20195}, 20185, 20190, 20805, 20804, {f: 2, c: 20873}, 20908,
   7646     {f: 2, c: 20985}, 20984, 21002, 21152, 21151, [21253, 57435], 21254, 21271,
   7647     21277, 20191, 21322, 21321, 21345, 21344, 21359, 21358, 21435, 21487,
   7648     21476, 21491, 21484, 21486, 21481, 21480, 21500, 21496, 21493, 21483,
   7649     21478, 21482, 21490, 21489, 21488, 21477, 21485, 21499, 22235, 22234,
   7650     22806, 22830, 22833, 22900, 22902, 23381, 23427, 23612, 24040, 24039,
   7651     24038, {f: 2, c: 24066}, 24179, 24188, 24321, 24344, 24343, 24517, 25098,
   7652     {f: 2, c: 25171}, 25170, 25169, 26021, 26086, 26414, 26412,
   7653     {f: 2, c: 26410}, 26413, 27491, 27597, 27665, 27664, 27704, 27713, 27712,
   7654     27710, 29359, [12126, 29572], [12127, 29577], [12128, 29916],
   7655     [12129, 29926], [12130, 29976], [12131, 29983], [12132, 29992], 29993,
   7656     [12133, 30000], {f: 3, c: 30001}, [12134, 30091], [12137, 30333],
   7657     [12138, 30382], [12139, 30399], [12140, 30446], [12141, 30683],
   7658     [12142, 30690], [12143, 30707], [12144, 31034], [12146, 31166],
   7659     [12147, 31348], [12148, 31435], {f: 2, c: 19998}, {f: 2, c: 20050}, 20073,
   7660     20121, 20132, 20134, 20133, 20223, 20233, 20249, 20234, 20245, 20237,
   7661     {f: 2, c: 20240}, 20239, 20210, 20214, 20219, 20208, 20211, 20221, 20225,
   7662     20235, 20809, 20807, 20806, 20808, 20840, 20849, 20877, 20912, 21015,
   7663     {f: 2, c: 21009}, 21006, 21014, 21155, 21256, 21281, 21280,
   7664     {f: 2, c: 21360}, 21513, 21519, 21516, 21514, 21520, 21505, 21515, 21508,
   7665     21521, 21517, 21512, 21507, 21518, 21510, 21522, 22240, 22238, 22237,
   7666     22323, 22320, 22312, 22317, 22316, 22319, 22313, {f: 2, c: 22809},
   7667     {f: 2, c: 22839}, 22916, 22904, 22915, 22909, 22905, 22914, 22913,
   7668     {f: 2, c: 23383}, {f: 2, c: 23431}, 23429, 23433, 23546, 23574, 23673,
   7669     24030, 24070, 24182, 24180, 24335, 24347, 24537, 24534, 25102,
   7670     {f: 2, c: 25100}, 25104, 25187, 25179, 25176, 25910, 26089, 26088,
   7671     {f: 2, c: 26092}, {f: 2, c: 26354}, 26377, 26429, 26420, 26417, 26421,
   7672     27425, 27492, 27515, 27670, 27741, 27735, 27737, {f: 2, c: 27743}, 27728,
   7673     27733, 27745, 27739, {f: 2, c: 27725}, 28784, 29279, 29277, 30334,
   7674     [12149, 31481], [12150, 31859], [12151, 31992], [12152, 32566],
   7675     [12154, 32650], [12155, 32701], [12156, 32769], 32771, [12157, 32780],
   7676     [12158, 32786], [12159, 32819], [12160, 32895], [12161, 32905],
   7677     {f: 2, c: 32907}, [12162, 33251], [12163, 33258], [12164, 33267],
   7678     [12165, 33276], [12166, 33292], [12167, 33307], [12168, 33311],
   7679     [12169, 33390], [12170, 33394], 33406, [12173, 34411], [12174, 34880],
   7680     [12175, 34892], [12176, 34915], 35199, 38433, 20018, 20136, 20301, 20303,
   7681     20295, 20311, 20318, 20276, 20315, 20309, 20272, {f: 2, c: 20304}, 20285,
   7682     20282, 20280, 20291, 20308, 20284, 20294, 20323, 20316, 20320, 20271,
   7683     20302, 20278, 20313, 20317, 20296, 20314, 20812, 20811, 20813, 20853,
   7684     {f: 2, c: 20918}, 21029, 21028, {f: 2, c: 21033}, 21032, 21163,
   7685     {f: 2, c: 21161}, 21164, 21283, 21363, 21365, 21533, 21549, 21534, 21566,
   7686     21542, 21582, 21543, 21574, 21571, 21555, 21576, 21570, 21531, 21545,
   7687     21578, 21561, 21563, 21560, 21550, {f: 2, c: 21557}, 21536, 21564, 21568,
   7688     21553, 21547, 21535, 21548, 22250, 22256, 22244, 22251, 22346, 22353,
   7689     22336, 22349, 22343, 22350, 22334, 22352, 22351, 22331, 22767, 22846,
   7690     22941, 22930, 22952, 22942, 22947, 22937, 22934, 22925, 22948, 22931,
   7691     22922, 22949, 23389, 23388, {f: 2, c: 23386}, 23436, 23435, 23439, 23596,
   7692     {f: 2, c: 23616}, 23615, 23614, {f: 2, c: 23696}, 23700, 23692, 24043,
   7693     24076, 24207, 24199, 24202, 24311, 24324, 24351, 24420, 24418, 24439,
   7694     24441, 24536, 24524, 24535, 24525, 24561, 24555, 24568, 24554, 25106,
   7695     25105, 25220, 25239, 25238, 25216, 25206, 25225, 25197, 25226, 25212,
   7696     25214, 25209, 25203, 25234, 25199, 25240, 25198, 25237, 25235, 25233,
   7697     25222, 25913, 25915, 25912, 26097, 26356, 26463, {f: 4, c: 26446}, 26460,
   7698     26454, [26462, 57801], 26441, 26438, 26464, 26451, 26455, 27493, 27599,
   7699     27714, 27742, 27801, 27777, {f: 2, c: 27784}, 27781, 27803, 27754, 27770,
   7700     27792, 27760, 27788, 27752, 27798, 27794, 27773, 27779, 27762, 27774,
   7701     27764, 27782, 27766, 27789, 27796, 27800, 27778, 28790, {f: 2, c: 28796},
   7702     28792, 29282, 29281, 29280, 29380, 29378, 29590, 29996, 29995,
   7703     {f: 2, c: 30007}, 30338, 30447, 30691, 31169, 31168, 31167, 31350, 31995,
   7704     32597, 32918, 32915, 32925, 32920, 32923, 32922, 32946, 33391, 33426,
   7705     33419, 33421, [12178, 35211], [12179, 35282], [12180, 35328],
   7706     [12181, 35895], [12182, 35910], [12183, 35925], [12185, 35997],
   7707     [12186, 36196], [12187, 36208], [12188, 36275], [12189, 36523],
   7708     [12190, 36554], [12191, 36763], [12192, 36784], 36802, 36806, 36805, 36804,
   7709     24033, [12194, 37009], 37026, 37034, 37030, 37027, [12195, 37193],
   7710     [12196, 37318], [12197, 37324], 38450, 38446, 38449, 38442, 38444, 20006,
   7711     20054, 20083, 20107, 20123, 20126, {f: 2, c: 20139}, 20335, 20381, 20365,
   7712     20339, 20351, 20332, 20379, 20363, 20358, 20355, 20336, 20341, 20360,
   7713     20329, 20347, 20374, 20350, 20367, 20369, 20346, 20820, 20818, 20821,
   7714     20841, 20855, 20854, 20856, 20925, 20989, 21051, 21048, 21047, 21050,
   7715     21040, 21038, 21046, 21057, 21182, 21179, 21330, 21332, 21331, 21329,
   7716     21350, {f: 3, c: 21367}, 21462, 21460, 21463, 21619, 21621, 21654, 21624,
   7717     21653, 21632, 21627, 21623, 21636, 21650, 21638, 21628, 21648, 21617,
   7718     21622, 21644, 21658, 21602, 21608, 21643, 21629, 21646, 22266, 22403,
   7719     22391, 22378, 22377, 22369, 22374, 22372, 22396, 22812, 22857,
   7720     {f: 2, c: 22855}, 22852, 22868, 22974, 22971, 22996, 22969, 22958, 22993,
   7721     22982, 22992, 22989, 22987, 22995, 22986, 22959, 22963, 22994, 22981,
   7722     23391, 23396, 23395, 23447, 23450, 23448, 23452, 23449, 23451, 23578,
   7723     23624, {f: 2, c: 23621}, 23735, 23713, 23736, 23721, 23723, 23729, 23731,
   7724     24088, 24090, 24086, 24085, 24091, 24081, 24184, 24218, 24215, 24220,
   7725     {f: 2, c: 24213}, 24310, {f: 2, c: 24358}, 24361, {f: 2, c: 24448}, 24447,
   7726     24444, 24541, 24544, 24573, 24565, 24575, 24591, 24596, 24623, 24629,
   7727     24598, 24618, 24597, 24609, 24615, 24617, 24619, 24603, 25110, 25109,
   7728     25151, 25150, 25152, 25215, 25289, 25292, 25284, 25279, 25282, 25273,
   7729     25298, 25307, 25259, {f: 2, c: 25299}, 25291, 25288, 25256, 25277, 25276,
   7730     [25296, 60582], 25305, 25287, 25293, 25269, 25306, 25265, 25304,
   7731     {f: 2, c: 25302}, 25286, 25260, [25294, 61010], 25918, 26023, 26044, 26106,
   7732     26132, 26131, 26124, 26118, 26114, 26126, 26112, 26127, 26133, 26122,
   7733     26119, 26381, 26379, 26477, 26507, 26517, 26481, 26524, 26483, 26487,
   7734     26503, 26525, 26519, {f: 2, c: 26479}, 26495, 26505, 26494, 26512, 26485,
   7735     26522, 26515, 26492, 26474, 26482, 27427, {f: 2, c: 27494}, 27519, 27667,
   7736     27675, 27875, 27880, 27891, 27825, 27852, 27877, 27827, {f: 2, c: 27837},
   7737     27836, 27874, 27819, 27861, 27859, 27832, 27844, 27833, 27841, 27822,
   7738     27863, 27845, 27889, 27839, 27835, 27873, 27867, 27850, 27820, 27887,
   7739     27868, 27862, 27872, 28821, 28814, 28818, 28810, 28825, {f: 2, c: 29228},
   7740     29240, 29256, 29287, 29289, 29376, 29390, 29401, 29399, 29392, 29609,
   7741     29608, 29599, 29611, 29605, 30013, 30109, {f: 2, c: 30105}, 30340, 30402,
   7742     30450, 30452, 30693, 30717, 31038, {f: 2, c: 31040}, 31177, 31176, 31354,
   7743     31353, 31482, 31998, 32596, 32652, 32651, [32773, 58236], 32954, 32933,
   7744     32930, 32945, 32929, 32939, 32937, 32948, 32938, 32943, 33253, 33278,
   7745     33293, 33459, 33437, 33433, 33453, 33469, 33439, 33465, 33457, 33452,
   7746     33445, 33455, 33464, 33443, 33456, 33470, 33463, 34382, 34417, 21021,
   7747     34920, 36555, 36814, 36820, 36817, 37045, 37048, 37041, 37046, 37319,
   7748     [12198, 37329], [12199, 38263], [12200, 38272], [12201, 38428], 38464,
   7749     38463, 38459, 38468, 38466, [12203, 38585], [12204, 38632], 38738,
   7750     [12206, 38750], 20127, {f: 2, c: 20141}, 20449, 20405, 20399, 20415, 20448,
   7751     20433, 20431, 20445, 20419, 20406, 20440, 20447, 20426, 20439, 20398,
   7752     20432, 20420, 20418, 20442, 20430, 20446, 20407, 20823, 20882, 20881,
   7753     20896, 21070, 21059, 21066, 21069, 21068, 21067, 21063, 21191, 21193,
   7754     21187, 21185, 21261, 21335, 21371, 21402, 21467, 21676, 21696, 21672,
   7755     21710, 21705, 21688, 21670, 21683, 21703, 21698, 21693, 21674, 21697,
   7756     21700, 21704, 21679, 21675, 21681, 21691, 21673, 21671, 21695, 22271,
   7757     22402, 22411, 22432, 22435, 22434, 22478, 22446, 22419, 22869, 22865,
   7758     22863, 22862, 22864, 23004, 23000, 23039, 23011, 23016, 23043, 23013,
   7759     23018, 23002, 23014, 23041, 23035, 23401, 23459, 23462, 23460, 23458,
   7760     23461, 23553, {f: 2, c: 23630}, 23629, 23627, 23769, 23762, 24055, 24093,
   7761     24101, 24095, 24189, 24224, 24230, 24314, 24328, 24365, 24421, 24456,
   7762     24453, {f: 2, c: 24458}, 24455, 24460, 24457, 24594, 24605, 24608, 24613,
   7763     24590, 24616, 24653, 24688, 24680, [24674, 60712], 24646, 24643, 24684,
   7764     24683, 24682, 24676, 25153, 25308, 25366, 25353, 25340, 25325, 25345,
   7765     25326, 25341, 25351, 25329, 25335, 25327, 25324, 25342, 25332, 25361,
   7766     25346, 25919, 25925, 26027, 26045, 26082, 26149, 26157, 26144, 26151,
   7767     26159, 26143, 26152, 26161, 26148, 26359, 26623, 26579, 26609, 26580,
   7768     26576, 26604, 26550, 26543, 26613, 26601, 26607, 26564, 26577, 26548,
   7769     26586, 26597, 26552, 26575, 26590, 26611, 26544, 26585, 26594, 26589,
   7770     26578, 27498, 27523, 27526, 27573, 27602, 27607, 27679, 27849, 27915,
   7771     27954, 27946, 27969, 27941, 27916, 27953, 27934, 27927, 27963,
   7772     {f: 2, c: 27965}, 27958, 27931, 27893, 27961, 27943, 27960, 27945, 27950,
   7773     27957, 27918, 27947, 28843, 28858, 28851, 28844, 28847, 28845, 28856,
   7774     28846, 28836, 29232, 29298, 29295, 29300, 29417, {f: 2, c: 29408}, 29623,
   7775     29642, 29627, 29618, 29645, 29632, 29619, 29978, 29997, 30031, 30028,
   7776     30030, 30027, 30123, {f: 2, c: 30116}, {f: 2, c: 30114}, 30328,
   7777     {f: 3, c: 30342}, 30408, 30406, 30403, 30405, 30465, 30457, 30456, 30473,
   7778     30475, 30462, 30460, 30471, 30684, 30722, 30740, {f: 2, c: 30732}, 31046,
   7779     31049, 31048, 31047, {f: 2, c: 31161}, {f: 2, c: 31185}, 31179, 31359,
   7780     31361, 31487, 31485, 31869, 32002, 32005, 32000, 32009, 32007, 32004,
   7781     32006, 32568, 32654, 32703, 32784, 32781, 32785, 32822, 32982, 32997,
   7782     32986, {f: 2, c: 32963}, 32972, 32993, 32987, 32974, 32990, 32996, 32989,
   7783     33268, 33314, 33511, 33539, 33541, 33507, 33499, 33510, 33540, 33509,
   7784     33538, 33545, 33490, 33495, 33521, 33537, 33500, 33492, 33489, 33502,
   7785     33491, 33503, 33519, 33542, 34384, 34425, 34427, 34426, 34893, 34923,
   7786     35201, 35284, 35336, {f: 2, c: 35330}, 35998, 36000, 36212, 36211, 36276,
   7787     36557, 36556, 36848, 36838, 36834, 36842, 36837, 36845, 36843, 36836,
   7788     36840, 37066, 37070, 37057, 37059, 37195, 37194, 37325, 38274, 38480,
   7789     {f: 3, c: 38475}, [12207, 38754], [12208, 38761], [12209, 38859],
   7790     [12210, 38893], [12211, 38899], [12212, 38913], [12213, 39080],
   7791     [12214, 39131], [12215, 39135], [12216, 39318], [12217, 39321], 20056,
   7792     20147, {f: 2, c: 20492}, 20515, 20463, 20518, 20517, 20472, [20521, 57375],
   7793     20502, 20486, 20540, 20511, 20506, 20498, 20497, 20474, 20480, 20500,
   7794     20520, 20465, 20513, 20491, 20505, 20504, 20467, 20462, 20525, 20522,
   7795     20478, 20523, 20489, 20860, {f: 2, c: 20900}, 20898, 20941, 20940, 20934,
   7796     20939, 21078, 21084, 21076, 21083, 21085, 21290, [21375, 57459], 21407,
   7797     21405, 21471, 21736, 21776, 21761, 21815, 21756, 21733, 21746, 21766,
   7798     21754, 21780, 21737, 21741, 21729, 21769, 21742, 21738, 21734, 21799,
   7799     21767, 21757, 21775, {f: 2, c: 22275}, 22466, 22484, 22475, 22467, 22537,
   7800     22799, {f: 2, c: 22871}, 22874, 23057, 23064, 23068, 23071, 23067, 23059,
   7801     23020, 23072, 23075, 23081, 23077, 23052, 23049, 23403, 23640, 23472,
   7802     23475, 23478, 23476, 23470, 23477, 23481, 23480, 23556, 23633, 23637,
   7803     23632, 23789, 23805, 23803, 23786, 23784, 23792, 23798, 23809, 23796,
   7804     24046, 24109, 24107, 24235, 24237, 24231, 24369, 24466, 24465, 24464,
   7805     24665, 24675, 24677, 24656, 24661, 24685, 24681, 24687, 24708, 24735,
   7806     24730, 24717, 24724, 24716, 24709, 24726, 25159, 25331, 25352, 25343,
   7807     25422, 25406, 25391, 25429, 25410, 25414, 25423, 25417, 25402, 25424,
   7808     25405, {f: 2, c: 25386}, 25384, 25421, 25420, {f: 2, c: 25928}, 26009,
   7809     26049, 26053, 26178, 26185, 26191, 26179, 26194, 26188, 26181, 26177,
   7810     26360, {f: 2, c: 26388}, 26391, 26657, 26680, 26696, 26694, 26707, 26681,
   7811     26690, 26708, 26665, 26803, 26647, 26700, 26705, 26685, 26612, 26704,
   7812     26688, 26684, 26691, 26666, 26693, 26643, 26648, 26689, 27530, 27529,
   7813     27575, 27683, {f: 2, c: 27687}, 27686, 27684, 27888, 28010, 28053, 28040,
   7814     28039, 28006, 28024, 28023, 27993, 28051, 28012, 28041, 28014, 27994,
   7815     28020, 28009, 28044, 28042, 28025, 28037, 28005, 28052, 28874, 28888,
   7816     28900, 28889, 28872, 28879, 29241, 29305, 29436, 29433, 29437, 29432,
   7817     29431, 29574, 29677, 29705, 29678, 29664, 29674, 29662, 30036, 30045,
   7818     30044, 30042, 30041, 30142, 30149, 30151, {f: 2, c: 30130}, 30141, 30140,
   7819     30137, 30146, 30136, 30347, 30384, 30410, {f: 2, c: 30413}, 30505,
   7820     {f: 2, c: 30495}, 30504, 30697, 30768, 30759, 30776, 30749, 30772, 30775,
   7821     30757, 30765, 30752, 30751, 30770, 31061, 31056, 31072, 31071, 31062,
   7822     31070, 31069, 31063, 31066, 31204, [31203, 60418], 31207, 31199, 31206,
   7823     31209, 31192, 31364, 31368, 31449, 31494, 31505, 31881, 32033, 32023,
   7824     32011, 32010, 32032, 32034, 32020, 32016, 32021, 32026, 32028, 32013,
   7825     32025, 32027, 32570, 32607, 32660, 32709, 32705, 32774, 32772, 32792,
   7826     32789, 32793, 32791, 32829, 32831, 33009, 33026, 33008, 33029, 33005,
   7827     33012, 33030, 33016, 33011, 33032, 33021, 33034, 33020, 33007, 33261,
   7828     33260, 33280, 33296, {f: 2, c: 33322}, 33320, 33324, 33467, 33579, 33618,
   7829     33620, 33610, 33592, 33616, 33609, 33589, 33588, 33615, 33586, 33593,
   7830     33590, 33559, 33600, 33585, 33576, 33603, 34388, 34442, 34474, 34451,
   7831     34468, 34473, 34444, 34467, 34460, 34928, 34935, {f: 2, c: 34945}, 34941,
   7832     34937, 35352, 35344, 35342, 35340, 35349, 35338, 35351, 35347, 35350,
   7833     35343, 35345, 35912, 35962, 35961, {f: 2, c: 36001}, [36215, 58442], 36524,
   7834     36562, 36564, 36559, 36785, 36865, 36870, 36855, 36864, 36858, 36852,
   7835     36867, 36861, 36869, 36856, 37013, 37089, 37085, 37090, 37202, 37197,
   7836     37196, 37336, 37341, 37335, 37340, 37337, 38275, {f: 2, c: 38498}, 38497,
   7837     38491, 38493, 38500, 38488, 38494, 38587, 39138, [12218, 39340],
   7838     [12219, 39592], [12220, 39640], [12222, 39717], [12224, 39730],
   7839     [12225, 39740], 20094, 20602, [20605, 57382], 20572, 20551, 20547, 20556,
   7840     20570, 20553, 20581, 20598, 20558, 20565, 20597, 20596, 20599, 20559,
   7841     20495, 20591, 20589, 20828, 20885, 20976, 21098, 21103, 21202, 21209,
   7842     21208, 21205, 21264, 21263, 21273, {f: 2, c: 21311}, 21310, 21443, 26364,
   7843     21830, 21866, 21862, 21828, 21854, 21857, 21827, 21834, 21809, 21846,
   7844     21839, 21845, 21807, 21860, 21816, 21806, 21852, 21804, 21859, 21811,
   7845     21825, 21847, 22280, 22283, 22281, 22495, 22533, 22538, 22534, 22496,
   7846     22500, 22522, 22530, 22581, 22519, 22521, 22816, 22882, 23094, 23105,
   7847     23113, 23142, 23146, 23104, 23100, 23138, 23130, 23110, 23114, 23408,
   7848     23495, 23493, 23492, 23490, 23487, 23494, 23561, 23560, 23559, 23648,
   7849     {f: 2, c: 23644}, 23815, 23814, 23822, 23835, 23830, 23842, 23825, 23849,
   7850     23828, 23833, 23844, 23847, 23831, 24034, 24120, 24118, 24115, 24119,
   7851     {f: 2, c: 24247}, 24246, 24245, 24254, 24373, 24375, 24407, 24428, 24425,
   7852     24427, 24471, 24473, 24478, 24472, 24481, 24480, 24476, 24703, 24739,
   7853     24713, 24736, 24744, 24779, 24756, 24806, 24765, 24773, 24763, 24757,
   7854     24796, 24764, 24792, 24789, 24774, 24799, 24760, 24794, 24775,
   7855     {f: 2, c: 25114}, 25160, 25504, 25511, 25458, 25494, 25506, 25509, 25463,
   7856     25447, 25496, 25514, 25457, 25513, 25481, 25475, 25499, 25451, 25512,
   7857     25476, 25480, 25497, 25505, 25516, 25490, 25487, 25472, 25467, 25449,
   7858     25448, 25466, 25949, 25942, 25937, 25945, 25943, 21855, 25935, 25944,
   7859     25941, 25940, 26012, 26011, 26028, 26063, {f: 2, c: 26059}, 26062, 26205,
   7860     26202, 26212, 26216, 26214, 26206, 26361, 21207, 26395, 26753, 26799,
   7861     26786, 26771, 26805, 26751, 26742, 26801, 26791, 26775, 26800, 26755,
   7862     26820, 26797, 26758, 26757, 26772, 26781, 26792, 26783, 26785, 26754,
   7863     27442, 27578, {f: 2, c: 27627}, 27691, 28046, 28092, 28147, 28121, 28082,
   7864     28129, 28108, 28132, 28155, 28154, 28165, 28103, 28107, 28079, 28113,
   7865     28078, 28126, 28153, 28088, 28151, 28149, 28101, 28114, 28186, 28085,
   7866     28122, 28139, 28120, 28138, 28145, 28142, 28136, 28102, 28100, 28074,
   7867     28140, 28095, 28134, 28921, {f: 2, c: 28937}, 28925, 28911, 29245, 29309,
   7868     29313, 29468, 29467, 29462, 29459, 29465, 29575, 29701, 29706, 29699,
   7869     29702, 29694, 29709, 29920, {f: 2, c: 29942}, 29980, 29986,
   7870     {f: 2, c: 30053}, 30050, 30064, 30095, {f: 2, c: 30164}, 30133, 30154,
   7871     30157, 30350, 30420, 30418, 30427, 30519, 30526, 30524, 30518, 30520,
   7872     30522, 30827, 30787, 30798, 31077, 31080, 31085, 31227, 31378, 31381,
   7873     31520, 31528, 31515, 31532, 31526, 31513, 31518, 31534, 31890, 31895,
   7874     31893, 32070, 32067, 32113, 32046, 32057, 32060, 32064, 32048, 32051,
   7875     32068, 32047, 32066, 32050, 32049, 32573, 32670, 32666, 32716, 32718,
   7876     32722, 32796, 32842, 32838, 33071, 33046, 33059, 33067, 33065, 33072,
   7877     33060, 33282, 33333, 33335, 33334, 33337, 33678, 33694, 33688, 33656,
   7878     33698, 33686, 33725, 33707, 33682, 33674, 33683, 33673, 33696, 33655,
   7879     {f: 2, c: 33659}, 33670, 33703, 34389, 24426, 34503, 34496, 34486, 34500,
   7880     34485, 34502, 34507, 34481, 34479, 34505, 34899, 34974, 34952, 34987,
   7881     34962, 34966, 34957, 34955, 35219, 35215, 35370, 35357, 35363, 35365,
   7882     35377, 35373, 35359, 35355, 35362, 35913, 35930, 36009, 36012, 36011,
   7883     36008, 36010, 36007, 36199, 36198, 36286, 36282, 36571, 36575, 36889,
   7884     36877, 36890, 36887, 36899, 36895, 36893, 36880, 36885, 36894, 36896,
   7885     36879, 36898, 36886, 36891, 36884, 37096, 37101, [37117, 58488], 37207,
   7886     37326, 37365, 37350, 37347, 37351, 37357, 37353, 38281, 38506, 38517,
   7887     38515, 38520, 38512, 38516, {f: 2, c: 38518}, 38508, 38592, 38634, 38633,
   7888     31456, 31455, {f: 2, c: 38914}, [12226, 39770], [12227, 40165],
   7889     [12228, 40565], [12229, 40575], [12230, 40613], [12231, 40635], 20642,
   7890     20621, 20613, 20633, 20625, 20608, 20630, 20632, 20634, 26368, 20977,
   7891     21106, {f: 2, c: 21108}, 21097, 21214, 21213, 21211, 21338, 21413, 21883,
   7892     21888, 21927, 21884, 21898, 21917, 21912, 21890, 21916, 21930, 21908,
   7893     21895, 21899, 21891, 21939, 21934, 21919, 21822, 21938, 21914, 21947,
   7894     21932, 21937, 21886, 21897, 21931, 21913, 22285, 22575, 22570, 22580,
   7895     22564, {f: 2, c: 22576}, 22561, 22557, 22560, {f: 2, c: 22777}, 22880,
   7896     [23159, 57587], 23194, 23167, 23186, 23195, 23207, 23411, 23409, 23506,
   7897     23500, 23507, 23504, {f: 2, c: 23562}, 23601, 23884, 23888, 23860, 23879,
   7898     24061, 24133, 24125, 24128, 24131, 24190, 24266, {f: 2, c: 24257}, 24260,
   7899     24380, 24429, {f: 2, c: 24489}, 24488, 24785, 24801, 24754, 24758, 24800,
   7900     24860, 24867, 24826, 24853, 24816, 24827, 24820, 24936, 24817, 24846,
   7901     24822, 24841, 24832, 24850, 25119, 25161, 25507, 25484, 25551, 25536,
   7902     25577, 25545, 25542, 25549, 25554, 25571, 25552, 25569, 25558,
   7903     {f: 2, c: 25581}, 25462, 25588, 25578, 25563, 25682, 25562, 25593, 25950,
   7904     25958, {f: 2, c: 25954}, 26001, 26000, 26031, 26222, 26224, [26228, 57786],
   7905     26230, 26223, 26257, 26234, 26238, 26231, {f: 2, c: 26366}, 26399, 26397,
   7906     26874, 26837, 26848, 26840, 26839, 26885, 26847, 26869, 26862, 26855,
   7907     26873, 26834, 26866, 26851, 26827, 26829, 26893, 26898, 26894, 26825,
   7908     26842, 26990, 26875, 27454, 27450, 27453, 27544, 27542, 27580, 27631,
   7909     {f: 2, c: 27694}, 27692, [28207, 57904], 28216, 28244, 28193, 28210, 28263,
   7910     28234, 28192, 28197, 28195, 28187, 28251, 28248, 28196, 28246, 28270,
   7911     28205, 28198, 28271, 28212, 28237, 28218, 28204, 28227, [28189, 57901],
   7912     28222, 28363, 28297, 28185, 28238, 28259, 28228, 28274, 28265, 28255,
   7913     {f: 2, c: 28953}, 28966, 28976, 28961, 28982, [29038, 57958], 28956, 29260,
   7914     29316, 29312, 29494, 29477, 29492, 29481, 29754, 29738, 29747, 29730,
   7915     29733, {f: 2, c: 29749}, 29748, 29743, 29723, 29734, 29736,
   7916     {f: 2, c: 29989}, 30059, 30058, 30178, 30171, 30179, 30169, 30168, 30174,
   7917     30176, {f: 2, c: 30331}, 30358, 30355, 30388, 30428, 30543, 30701, 30813,
   7918     30828, 30831, 31245, 31240, 31243, 31237, 31232, 31384, 31383, 31382,
   7919     31461, 31459, 31561, 31574, 31558, 31568, 31570, 31572, 31565, 31563,
   7920     31567, [31569, 60510], 31903, 31909, 32094, 32080, 32104, 32085, 32043,
   7921     32110, 32114, 32097, 32102, 32098, 32112, 32115, 21892, {f: 2, c: 32724},
   7922     32779, 32850, 32901, 33109, 33108, 33099, 33105, 33102, 33081, 33094,
   7923     33086, 33100, 33107, 33140, 33298, 33308, 33769, 33795, 33784, 33805,
   7924     33760, 33733, 33803, [33729, 58309], 33775, 33777, 33780, 33879, 33802,
   7925     33776, 33804, 33740, 33789, 33778, 33738, 33848, 33806, 33796, 33756,
   7926     33799, 33748, 33759, 34395, 34527, 34521, 34541, 34516, 34523, 34532,
   7927     34512, 34526, 34903, {f: 2, c: 35009}, 34993, 35203, 35222, 35387, 35424,
   7928     35413, 35422, 35388, 35393, 35412, 35419, 35408, 35398, 35380, 35386,
   7929     35382, 35414, 35937, 35970, 36015, 36028, 36019, 36029, 36033, 36027,
   7930     36032, 36020, 36023, 36022, 36031, 36024, 36234, 36229, 36225, 36302,
   7931     36317, 36299, 36314, 36305, 36300, 36315, 36294, 36603, 36600, 36604,
   7932     36764, 36910, 36917, 36913, 36920, 36914, 36918, 37122, 37109, 37129,
   7933     37118, 37219, 37221, 37327, {f: 2, c: 37396}, 37411, 37385, 37406, 37389,
   7934     37392, 37383, 37393, 38292, 38287, 38283, 38289, 38291, 38290, 38286,
   7935     38538, 38542, 38539, 38525, {f: 2, c: 38533}, 38541, 38514, 38532, 38593,
   7936     38597, 38596, {f: 2, c: 38598}, 38639, 38642, 38860, {f: 2, c: 38917},
   7937     38920, 39143, 39146, 39151, 39145, 39154, 39149, 39342, 39341,
   7938     [12232, 40643], [12233, 40653], [12234, 40657], 20098, 20653, 20661,
   7939     {f: 2, c: 20658}, 20677, 20670, 20652, 20663, 20667, 20655, 20679, 21119,
   7940     21111, 21117, 21215, 21222, 21220, {f: 2, c: 21218}, 21295, 21983, 21992,
   7941     21971, 21990, 21966, 21980, 21959, 21969, {f: 2, c: 21987}, 21999, 21978,
   7942     21985, {f: 2, c: 21957}, 21989, 21961, {f: 2, c: 22290}, 22622, 22609,
   7943     22616, 22615, 22618, 22612, 22635, 22604, 22637, 22602, 22626, 22610,
   7944     22603, 22887, 23233, 23241, 23244, 23230, 23229, 23228, 23219, 23234,
   7945     23218, 23913, 23919, 24140, 24185, 24265, 24264, 24338, 24409, 24492,
   7946     24494, 24858, 24847, 24904, 24863, 24819, 24859, 24825, 24833, 24840,
   7947     24910, 24908, 24900, 24909, 24894, 24884, 24871, 24845, 24838, 24887,
   7948     {f: 2, c: 25121}, 25619, 25662, 25630, 25642, 25645, 25661, 25644, 25615,
   7949     25628, 25620, 25613, 25654, {f: 2, c: 25622}, 25606, 25964, 26015, 26032,
   7950     26263, 26249, {f: 2, c: 26247}, 26262, 26244, 26264, 26253, 26371, 27028,
   7951     26989, 26970, 26999, 26976, 26964, 26997, 26928, 27010, 26954, 26984,
   7952     26987, 26974, 26963, 27001, 27014, 26973, 26979, 26971, 27463, 27506,
   7953     27584, 27583, 27603, 27645, 28322, 28335, 28371, 28342, 28354, 28304,
   7954     28317, 28359, 28357, 28325, 28312, 28348, 28346, 28331, 28369, 28310,
   7955     28316, 28356, 28372, 28330, 28327, 28340, 29006, 29017, 29033, 29028,
   7956     29001, 29031, 29020, 29036, 29030, 29004, 29029, 29022, 28998, 29032,
   7957     29014, 29242, 29266, 29495, 29509, 29503, 29502, 29807, 29786, 29781,
   7958     29791, 29790, 29761, 29759, 29785, 29787, [29788, 58019], 30070, 30072,
   7959     30208, 30192, 30209, 30194, 30193, 30202, 30207, 30196, 30195,
   7960     {f: 2, c: 30430}, 30555, 30571, 30566, 30558, 30563, 30585, 30570, 30572,
   7961     30556, 30565, 30568, 30562, 30702, 30862, 30896, {f: 2, c: 30871}, 30860,
   7962     30857, 30844, 30865, 30867, 30847, 31098, 31103, 31105, 33836, 31165,
   7963     31260, 31258, 31264, 31252, 31263, 31262, {f: 2, c: 31391}, 31607, 31680,
   7964     31584, 31598, 31591, 31921, 31923, 31925, 32147, 32121, 32145, 32129,
   7965     32143, 32091, 32622, {f: 2, c: 32617}, 32626, 32681, 32680, 32676, 32854,
   7966     32856, 32902, 32900, 33137, 33136, 33144, 33125, 33134, 33139, 33131,
   7967     {f: 2, c: 33145}, 33126, 33285, 33351, 33922, 33911, 33853, 33841, 33909,
   7968     33894, 33899, 33865, 33900, 33883, 33852, 33845, 33889, 33891, 33897,
   7969     33901, 33862, 34398, 34396, 34399, 34553, 34579, 34568, 34567, 34560,
   7970     34558, 34555, {f: 2, c: 34562}, 34566, 34570, 34905, 35039, 35028, 35033,
   7971     35036, 35032, 35037, 35041, 35018, 35029, 35026, 35228, 35299, 35435,
   7972     {f: 2, c: 35442}, 35430, 35433, 35440, 35463, 35452, 35427, 35488, 35441,
   7973     35461, 35437, 35426, 35438, 35436, 35449, 35451, 35390, 35432, 35938,
   7974     35978, 35977, 36042, {f: 2, c: 36039}, 36036, 36018, 36035, 36034, 36037,
   7975     36321, 36319, 36328, 36335, 36339, 36346, 36330, 36324, 36326, 36530,
   7976     36611, 36617, 36606, 36618, 36767, 36786, 36939, 36938, 36947, 36930,
   7977     36948, 36924, 36949, 36944, 36935, 36943, 36942, 36941, 36945, 36926,
   7978     36929, 37138, 37143, 37228, 37226, 37225, 37321, 37431, 37463, 37432,
   7979     37437, 37440, 37438, 37467, 37451, 37476, 37457, 37428, 37449, 37453,
   7980     37445, 37433, 37439, 37466, 38296, 38552, {f: 2, c: 38548}, 38605, 38603,
   7981     {f: 2, c: 38601}, 38647, 38651, 38649, 38646, 38742, 38772, 38774,
   7982     {f: 2, c: 38928}, 38931, 38922, 38930, 38924, 39164, 39156,
   7983     {f: 2, c: 39165}, 39347, 39345, 39348, 39649, 40169, 40578, [12237, 40718],
   7984     [12238, 40723], [12239, 40736], 20711, 20718, 20709, 20694, [20717, 60903],
   7985     20698, 20693, 20687, 20689, 20721, 20686, 20713, 20834, 20979, 21123,
   7986     21122, 21297, 21421, 22014, 22016, 22043, 22039, 22013, 22036, 22022,
   7987     22025, {f: 2, c: 22029}, 22007, 22038, 22047, 22024, 22032, 22006, 22296,
   7988     22294, 22645, 22654, 22659, 22675, 22666, 22649, 22661, 22653, 22781,
   7989     22821, 22818, 22820, 22890, 22889, 23265, 23270, 23273, 23255, 23254,
   7990     23256, 23267, 23413, 23518, 23527, 23521, {f: 2, c: 23525}, 23528, 23522,
   7991     23524, 23519, 23565, 23650, 23940, 23943, 24155, 24163, 24149, 24151,
   7992     24148, 24275, 24278, 24330, 24390, 24432, 24505, 24903, 24895, 24907,
   7993     24951, {f: 2, c: 24930}, 24927, 24922, 24920, 24949, 25130, 25735, 25688,
   7994     25684, 25764, 25720, 25695, 25722, 25681, 25703, 25652, 25709, 25723,
   7995     25970, 26017, 26071, 26070, 26274, 26280, 26269, 27036, 27048, 27029,
   7996     27073, 27054, 27091, 27083, 27035, 27063, 27067, 27051, 27060, 27088,
   7997     27085, 27053, 27084, 27046, 27075, 27043, 27465, 27468, 27699, 28467,
   7998     28436, 28414, 28435, 28404, 28457, 28478, 28448, 28460, 28431, 28418,
   7999     28450, 28415, 28399, 28422, 28465, 28472, 28466, 28451, 28437, 28459,
   8000     28463, 28552, 28458, 28396, 28417, 28402, 28364, 28407, 29076, 29081,
   8001     29053, 29066, 29060, 29074, 29246, 29330, 29334, 29508, 29520, 29796,
   8002     29795, 29802, 29808, 29805, 29956, 30097, 30247, 30221, 30219, 30217,
   8003     30227, 30433, 30435, 30596, 30589, 30591, 30561, 30913, 30879, 30887,
   8004     30899, 30889, 30883, {f: 2, c: 31118}, 31117, 31278, 31281, 31402, 31401,
   8005     31469, 31471, 31649, 31637, 31627, 31605, 31639, 31645, 31636, 31631,
   8006     [31672, 58170], 31623, 31620, 31929, {f: 2, c: 31933}, 32187, 32176, 32156,
   8007     {f: 2, c: 32189}, 32160, 32202, 32180, 32178, 32177, 32186, 32162, 32191,
   8008     32181, 32184, 32173, [32210, 58202], 32199, 32172, 32624, {f: 2, c: 32736},
   8009     32735, 32862, 32858, 32903, 33104, 33152, 33167, 33160, 33162, 33151,
   8010     33154, 33255, 33274, 33287, 33300, 33310, 33355, 33993, 33983, 33990,
   8011     33988, 33945, 33950, 33970, 33948, 33995, 33976, 33984, 34003, 33936,
   8012     33980, 34001, 33994, 34623, 34588, 34619, 34594, 34597, 34612, 34584,
   8013     34645, 34615, 34601, 35059, 35074, 35060, 35065, 35064, 35069, 35048,
   8014     35098, 35055, 35494, 35468, 35486, 35491, 35469, 35489, 35475, 35492,
   8015     35498, 35493, 35496, 35480, 35473, 35482, 35495, 35946, 35981, 35980,
   8016     36051, {f: 2, c: 36049}, 36203, 36249, 36245, 36348, 36628, 36626, 36629,
   8017     36627, 36771, 36960, 36952, 36956, 36963, 36953, 36958, 36962, 36957,
   8018     36955, 37145, 37144, 37150, 37237, 37240, 37239, 37236, 37496, 37548,
   8019     37504, 37509, 37528, 37526, 37499, 37523, 37532, 37544, 37500, 37521,
   8020     38305, {f: 2, c: 38312}, 38307, 38309, 38308, 38553, 38556, 38555, 38604,
   8021     38610, 38656, 38780, 38789, 38902, {f: 2, c: 38935}, 39087, 39089, 39171,
   8022     39173, 39180, 39177, 39361, {f: 2, c: 39599}, 39654, {f: 2, c: 39745},
   8023     40180, 40182, 40179, 40636, [12240, 40763], [12241, 40778], 20740, 20736,
   8024     20731, 20725, 20729, 20738, {f: 2, c: 20744}, 20741, 20956,
   8025     {f: 3, c: 21127}, 21133, 21130, 21232, 21426, 22062, 22075, 22073, 22066,
   8026     22079, 22068, 22057, 22099, 22094, 22103, 22132, 22070, {f: 2, c: 22063},
   8027     22656, 22687, 22686, 22707, 22684, 22702, 22697, 22694, 22893, 23305,
   8028     23291, 23307, 23285, 23308, 23304, 23534, 23532, 23529, 23531,
   8029     {f: 2, c: 23652}, 23965, 23956, 24162, 24159, 24161, 24290, 24282, 24287,
   8030     24285, 24291, 24288, 24392, 24433, 24503, 24501, 24950, 24935, 24942,
   8031     24925, 24917, 24962, 24956, 24944, 24939, 24958, 24999, 24976, 25003,
   8032     24974, 25004, 24986, 24996, 24980, 25006, 25134, 25705, 25711, 25721,
   8033     25758, 25778, 25736, [25744, 57745], 25776, 25765, 25747, 25749, 25769,
   8034     25746, 25774, 25773, 25771, 25754, 25772, 25753, 25762, 25779, 25973,
   8035     {f: 2, c: 25975}, 26286, 26283, 26292, 26289, 27171, 27167, 27112, 27137,
   8036     27166, 27161, 27133, 27169, 27155, 27146, 27123, 27138, 27141, 27117,
   8037     27153, 27472, 27470, 27556, {f: 2, c: 27589}, 28479, 28540, 28548, 28497,
   8038     28518, 28500, 28550, 28525, 28507, 28536, 28526, 28558, 28538, 28528,
   8039     28516, 28567, 28504, 28373, 28527, 28512, 28511, 29087, 29100, 29105,
   8040     29096, 29270, 29339, 29518, 29527, 29801, 29835, 29827, 29822, 29824,
   8041     30079, 30240, 30249, 30239, 30244, 30246, {f: 2, c: 30241}, 30362, 30394,
   8042     30436, 30606, 30599, 30604, 30609, 30603, 30923, 30917, 30906, 30922,
   8043     30910, 30933, 30908, 30928, 31295, 31292, 31296, 31293, 31287, 31291,
   8044     31407, 31406, 31661, 31665, 31684, 31668, {f: 2, c: 31686}, 31681, 31648,
   8045     31692, 31946, 32224, 32244, 32239, 32251, 32216, 32236, 32221, 32232,
   8046     32227, 32218, 32222, 32233, 32158, 32217, 32242, 32249, 32629, 32631,
   8047     32687, 32745, 32806, {f: 3, c: 33179}, 33184, 33178, 33176, 34071, 34109,
   8048     34074, 34030, {f: 2, c: 34092}, 34067, 34065, 34083, 34081, 34068, 34028,
   8049     34085, 34047, 34054, 34690, 34676, 34678, 34656, 34662, 34680, 34664,
   8050     34649, 34647, 34636, 34643, 34907, 34909, 35088, 35079, {f: 2, c: 35090},
   8051     35093, 35082, 35516, 35538, 35527, 35524, 35477, 35531, 35576, 35506,
   8052     35529, 35522, 35519, 35504, 35542, 35533, 35510, 35513, 35547, 35916,
   8053     35918, 35948, 36064, 36062, 36070, 36068, {f: 2, c: 36076},
   8054     {f: 2, c: 36066}, 36060, 36074, 36065, 36205, 36255, 36259, 36395, 36368,
   8055     36381, 36386, 36367, 36393, 36383, 36385, 36382, 36538, 36637, 36635,
   8056     36639, 36649, 36646, 36650, 36636, 36638, 36645, 36969, 36974, 36968,
   8057     36973, 36983, 37168, 37165, 37159, 37169, 37255, 37257, 37259, 37251,
   8058     37573, 37563, 37559, 37610, 37604, 37569, 37555, 37564, 37586, 37575,
   8059     37616, 37554, 38317, 38321, 38660, {f: 2, c: 38662}, 38665, 38752, 38797,
   8060     38795, 38799, 38945, 38955, 38940, 39091, 39178, 39187, 39186, 39192,
   8061     39389, 39376, 39391, 39387, 39377, 39381, 39378, 39385, 39607,
   8062     {f: 2, c: 39662}, 39719, 39749, 39748, 39799, 39791, 40198, 40201, 40195,
   8063     40617, 40638, 40654, 22696, [12242, 40786], 20754, 20760, 20756, 20752,
   8064     20757, 20864, 20906, 20957, 21137, 21139, 21235, 22105, 22123, 22137,
   8065     22121, 22116, 22136, 22122, 22120, 22117, 22129, 22127, 22124, 22114,
   8066     22134, 22721, 22718, 22727, 22725, 22894, 23325, 23348, 23416, 23536,
   8067     23566, 24394, 25010, 24977, 25001, 24970, 25037, 25014, 25022, 25034,
   8068     25032, 25136, 25797, 25793, 25803, {f: 2, c: 25787}, 25818, 25796, 25799,
   8069     25794, 25805, 25791, 25810, 25812, 25790, 25972, 26310, 26313, 26297,
   8070     26308, 26311, 26296, 27197, 27192, 27194, 27225, 27243, 27224, 27193,
   8071     27204, 27234, 27233, 27211, 27207, 27189, 27231, 27208, 27481, 27511,
   8072     27653, 28610, 28593, 28577, 28611, 28580, 28609, 28583, 28595, 28608,
   8073     28601, [28598, 60318], 28582, 28576, 28596, 29118, 29129, 29136, 29138,
   8074     29128, 29141, 29113, 29134, 29145, 29148, {f: 2, c: 29123}, 29544, 29852,
   8075     29859, 29848, 29855, 29854, 29922, {f: 2, c: 29964}, 30260, 30264, 30266,
   8076     30439, 30437, 30624, {f: 2, c: 30622}, 30629, 30952, 30938, 30956, 30951,
   8077     31142, {f: 2, c: 31309}, 31302, 31308, 31307, 31418, 31705, 31761, 31689,
   8078     31716, 31707, 31713, 31721, 31718, {f: 2, c: 31957}, 32266, 32273, 32264,
   8079     32283, 32291, 32286, [32285, 58211], 32265, 32272, 32633, 32690,
   8080     {f: 2, c: 32752}, 32750, [32808, 58239], 33203, 33193, 33192, 33275, 33288,
   8081     {f: 2, c: 33368}, 34122, 34137, 34120, {f: 2, c: 34152}, 34115, 34121,
   8082     34157, 34154, 34142, 34691, 34719, 34718, 34722, 34701, 34913, 35114,
   8083     35122, 35109, 35115, 35105, 35242, [35238, 58391], 35558, 35578, 35563,
   8084     35569, 35584, 35548, 35559, 35566, 35582, {f: 2, c: 35585}, 35575, 35565,
   8085     35571, 35574, 35580, 35947, 35949, 35987, 36084, 36420, 36401, 36404,
   8086     36418, 36409, 36405, 36667, 36655, 36664, 36659, 36776, 36774, 36981,
   8087     36980, 36984, 36978, 36988, 36986, 37172, 37266, 37664, 37686, 37624,
   8088     37683, 37679, 37666, 37628, 37675, 37636, 37658, 37648, 37670, 37665,
   8089     37653, 37678, 37657, 38331, {f: 2, c: 38567}, 38570, 38613, 38670, 38673,
   8090     38678, 38669, 38675, 38671, 38747, [38748, 58565], 38758, 38808, 38960,
   8091     38968, 38971, 38967, 38957, 38969, 38948, 39184, 39208, 39198, 39195,
   8092     39201, 39194, 39405, 39394, 39409, 39608, 39612, 39675, 39661, 39720,
   8093     39825, 40213, 40227, 40230, 40232, 40210, 40219, 40664, 40660,
   8094     [12243, 40845], [12244, 40860], 20778, 20767, 20769, 20786, 21237, 22158,
   8095     22144, 22160, 22149, 22151, 22159, 22741, 22739, 22737, 22734, 23344,
   8096     23338, 23332, 23418, 23607, 23656, 23996, 23994, 23997, 23992, 24171,
   8097     24396, 24509, 25033, 25026, 25031, 25062, 25035, 25138, 25140, 25806,
   8098     25802, 25816, 25824, 25840, 25830, 25836, 25841, 25826, 25837,
   8099     {f: 2, c: 25986}, 26329, 26326, 27264, 27284, 27268, 27298, 27292, 27355,
   8100     27299, 27262, 27287, 27280, 27296, 27484, 27566, 27610, 27656, 28632,
   8101     28657, {f: 2, c: 28639}, 28635, 28644, 28651, 28655, 28544, 28652, 28641,
   8102     28649, 28629, 28654, 28656, 29159, [29151, 60361], 29166, 29158, 29157,
   8103     29165, 29164, 29172, 29152, 29237, 29254, 29552, 29554, 29865, 29872,
   8104     29862, 29864, 30278, 30274, 30284, 30442, 30643, 30634, 30640, 30636,
   8105     30631, 30637, 30703, 30967, 30970, 30964, 30959, 30977, 31143, 31146,
   8106     31319, 31423, 31751, 31757, 31742, 31735, 31756, 31712, 31968, 31964,
   8107     31966, 31970, 31967, 31961, 31965, 32302, 32318, 32326, 32311, 32306,
   8108     32323, 32299, 32317, 32305, 32325, 32321, 32308, 32313, 32328, 32309,
   8109     32319, 32303, 32580, 32755, 32764, {f: 2, c: 32881}, 32880, 32879, 32883,
   8110     33222, 33219, 33210, 33218, 33216, 33215, 33213, 33225, 33214, 33256,
   8111     33289, 33393, 34218, 34180, 34174, 34204, 34193, 34196, 34223, 34203,
   8112     34183, 34216, 34186, 34214, 34407, 34752, 34769, 34739, 34770, 34758,
   8113     34731, 34747, 34746, 34760, 34763, 35131, 35126, 35140, 35128, 35133,
   8114     35244, 35598, 35607, 35609, 35611, 35594, 35616, 35613, 35588, 35600,
   8115     35905, 35903, 35955, 36090, 36093, 36092, 36088, 36091, 36264, 36425,
   8116     36427, 36424, 36426, 36676, 36670, 36674, 36677, 36671, 36991, 36989,
   8117     36996, {f: 2, c: 36993}, 36992, 37177, 37283, 37278, 37276, 37709, 37762,
   8118     37672, 37749, 37706, 37733, 37707, 37656, 37758, 37740, 37723, 37744,
   8119     37722, 37716, {f: 3, c: 38346}, 38344, 38342, 38577, 38584, 38614, 38684,
   8120     38686, 38816, 38867, 38982, 39094, 39221, 39425, 39423, 39854, 39851,
   8121     39850, 39853, 40251, 40255, 40587, 40655, 40670, {f: 2, c: 40668}, 40667,
   8122     40766, 40779, 21474, 22165, 22190, 22745, 22744, 23352, 24413, 25059,
   8123     25139, 25844, 25842, 25854, 25862, {f: 2, c: 25850}, 25847, 26039, 26332,
   8124     26406, 27315, 27308, 27331, 27323, 27320, 27330, {f: 2, c: 27310}, 27487,
   8125     27512, 27567, 28681, 28683, 28670, 28678, 28666, 28689, 28687,
   8126     {f: 2, c: 29179}, 29182, 29176, 29559, 29557, 29863, 29887, 29973, 30294,
   8127     30296, 30290, 30653, 30655, {f: 2, c: 30651}, 30990, 31150,
   8128     {f: 2, c: 31329}, 31328, {f: 2, c: 31428}, 31787, 31783, 31786, 31774,
   8129     31779, 31777, 31975, {f: 2, c: 32340}, 32350, 32346, 32353, 32338, 32345,
   8130     32584, 32761, 32763, 32887, 32886, 33229, 33231, 33290, 34255, 34217,
   8131     34253, 34256, 34249, 34224, 34234, 34233, 34799, 34796, 34802, 34784,
   8132     35206, 35250, 35316, 35624, 35641, 35628, 35627, 35920, 36101, 36441,
   8133     36451, 36454, 36452, 36447, 36437, 36544, 36681, 36685, 36999, 36995,
   8134     37000, {f: 2, c: 37291}, 37328, 37780, 37770, 37782, 37794, 37811, 37806,
   8135     37804, 37808, 37784, 37786, 37783, 38356, 38358, 38352, 38357, 38626,
   8136     38620, 38617, 38619, 38622, 38692, 38819, 38822, 38829, 38905, 38989,
   8137     38991, 38988, 38990, 38995, 39098, {f: 2, c: 39230}, 39229, 39214, 39333,
   8138     39438, 39617, 39683, 39686, 39759, 39758, 39757, 39882, 39881, 39933,
   8139     39880, 39872, 40273, 40285, 40288, 40672, 40725, 40748, 20787, 22181,
   8140     22184, {f: 2, c: 22750}, 22754, 23541, 40848, 24300, 25074, 25079, 25078,
   8141     25077, 25856, 25871, 26336, 26333, 27365, 27357, 27354, 27347, 28699,
   8142     28703, 28712, 28698, 28701, 28693, 28696, 29190, 29197, 29272, 29346,
   8143     29560, 29562, 29885, 29898, 29923, 30087, 30086, 30303, 30305, 30663,
   8144     31001, 31153, 31339, 31337, {f: 2, c: 31806}, 31800, 31805, 31799, 31808,
   8145     32363, 32365, 32377, {f: 2, c: 32361}, 32371, 32645, 32694, 32697, 32696,
   8146     33240, 34281, 34269, 34282, 34261, {f: 2, c: 34276}, 34295, 34811, 34821,
   8147     34829, 34809, 34814, 35168, 35167, 35158, 35166, 35649, 35676, 35672,
   8148     35657, 35674, {f: 2, c: 35662}, 35654, 35673, 36104, 36106, 36476, 36466,
   8149     36487, 36470, 36460, 36474, 36468, 36692, 36686, 36781, {f: 2, c: 37002},
   8150     37297, 37294, 37857, 37841, 37855, 37827, 37832, {f: 2, c: 37852}, 37846,
   8151     37858, 37837, 37848, 37860, 37847, 37864, 38364, 38580, 38627, 38698,
   8152     38695, 38753, 38876, 38907, 39006, 39000, 39003, 39100, 39237, 39241,
   8153     39446, 39449, 39693, 39912, 39911, 39894, 39899, 40329, 40289, 40306,
   8154     40298, 40300, 40594, 40599, 40595, 40628, 21240, 22199, 22198, 22196,
   8155     22204, 22756, 23360, 23363, 23421, 23542, 24009, 25080, 25082, 25880,
   8156     25876, 25881, 26342, 26407, 27372, 28734, 28720, 28722, 29200, 29563,
   8157     29903, 30306, 30309, 31014, 31018, 31020, 31019, 31431, 31478, 31820,
   8158     31811, 31821, {f: 2, c: 31983}, 36782, 32381, 32380, 32386, 32588, 32768,
   8159     33242, 33382, 34299, 34297, 34321, 34298, 34310, 34315, 34311, 34314,
   8160     {f: 2, c: 34836}, 35172, 35258, 35320, 35696, 35692, 35686, 35695, 35679,
   8161     35691, 36111, 36109, 36489, 36481, 36485, 36482, 37300, 37323, 37912,
   8162     37891, 37885, 38369, 38704, 39108, 39250, 39249, 39336, 39467, 39472,
   8163     39479, 39477, 39955, 39949, 40569, 40629, 40680, 40751, 40799, 40803,
   8164     40801, {f: 2, c: 20791}, 22209, 22208, 22210, 22804, 23660, 24013, 25084,
   8165     25086, 25885, 25884, 26005, 26345, 27387, 27396, 27386, 27570, 28748,
   8166     29211, 29351, 29910, 29908, 30313, 30675, 31824, 32399, 32396, 32700,
   8167     34327, 34349, 34330, 34851, 34850, 34849, 34847, 35178, 35180, 35261,
   8168     35700, 35703, 35709, 36115, 36490, 36493, 36491, 36703, 36783, 37306,
   8169     37934, 37939, 37941, 37946, 37944, 37938, 37931, 38370, {f: 2, c: 38712},
   8170     38706, [38911, 58586], 39015, 39013, 39255, 39493, 39491, 39488, 39486,
   8171     39631, 39764, 39761, 39981, 39973, 40367, 40372, 40386, 40376, 40605,
   8172     40687, 40729, 40796, {f: 2, c: 40806}, 20796, 20795, 22216, 22218, 22217,
   8173     23423, 24020, 24018, 24398, 25087, 25892, 27402, 27489, 28753, 28760,
   8174     29568, 29924, 30090, 30318, 30316, 31155, 31840, 31839, 32894, 32893,
   8175     33247, 35186, 35183, 35324, 35712, {f: 2, c: 36118}, 36497, 36499, 36705,
   8176     37192, 37956, {f: 2, c: 37969}, {f: 2, c: 38717}, 38851, 38849, 39019,
   8177     39253, 39509, 39501, 39634, 39706, 40009, 39985, 39998, 39995, 40403,
   8178     40407, 40756, 40812, 40810, 40852, 22220, 24022, 25088, 25891, 25899,
   8179     25898, 26348, 27408, 29914, 31434, 31844, 31843, 31845, 32403, 32406,
   8180     32404, 33250, 34360, 34367, 34865, 35722, 37008, 37007, 37987, 37984,
   8181     37988, 38760, 39023, 39260, {f: 2, c: 39514}, 39511, {f: 2, c: 39635},
   8182     39633, 40020, 40023, 40022, 40421, 40607, 40692, 22225, 22761, 25900,
   8183     28766, {f: 2, c: 30321}, [30679, 60226], 32592, 32648, 34870, 34873, 34914,
   8184     35731, 35730, 35734, 33399, 36123, 37312, 37994, 38722, 38728, 38724,
   8185     38854, 39024, 39519, 39714, 39768, 40031, {f: 2, c: 40441},
   8186     {f: 2, c: 40572}, 40711, 40823, 40818, 24307, 27414, 28771, 31852, 31854,
   8187     34875, 35264, 36513, 37313, 38002, 38000, 39025, 39262, 39638, 39715,
   8188     40652, 28772, 30682, 35738, 38007, 38857, 39522, 39525, 32412, 35740,
   8189     36522, 37317, {f: 2, c: 38013}, 38012, {f: 2, c: 40055}, 40695, 35924,
   8190     38015, 40474, 29224, 39530, 39729, 40475, 40478, 31858, 20034, 20060,
   8191     [12048, 20981], [12053, 21274], [12058, 21378], 19975, 19980, 20039, 20109,
   8192     [12062, 22231], [12076, 23662], [12091, 24435], 19983, 20871, 19982, 20014,
   8193     20115, 20162, 20169, 20168, 20888, 21244, 21356, 21433, 22304, 22787,
   8194     22828, [23568, 60417], 24063, 26081, [12110, 27571], 27596, [12115, 27668],
   8195     [12121, 29247], 20017, 20028, 20200, 20188, 20201, 20193, 20189, 20186,
   8196     21004, 21001, 21276, 21324, {f: 2, c: 22306}, 22807, 22831, 23425, 23428,
   8197     23570, 23611, 23668, 23667, 24068, 24192, 24194, 24521, 25097, 25168,
   8198     27669, 27702, 27715, 27711, 27707, 29358, 29360, 29578, [12145, 31160],
   8199     32906, 38430, 20238, 20248, 20268, 20213, 20244, 20209, 20224, 20215,
   8200     20232, 20253, 20226, 20229, 20258, 20243, 20228, 20212, 20242, 20913,
   8201     21011, 21008, 21158, 21282, 21279, 21325, 21386, 21511, 22241, 22239,
   8202     22318, 22314, 22324, 22844, 22912, 22908, 22917, 22907, 22910, 22903,
   8203     22911, 23382, 23573, 23589, 23676, {f: 2, c: 23674}, 23678, 24031,
   8204     [24181, 57646], 24196, 24322, 24346, 24436, 24533, 24532, 24527, 25180,
   8205     25182, 25188, 25185, 25190, 25186, 25177, 25184, 25178, 25189, 25911,
   8206     26095, 26094, 26430, 26425, 26424, 26427, 26426, 26431, 26428, 26419,
   8207     27672, 27718, 27730, 27740, 27727, [27722, 60796], 27732, {f: 2, c: 27723},
   8208     28785, 29278, {f: 2, c: 29364}, 29582, 29994, 30335, 31349, [12153, 32593],
   8209     [12171, 33400], 33404, 33408, 33405, 33407, [12172, 34381], [12177, 35198],
   8210     37017, [37015, 59347], 37016, 37019, 37012, 38434, 38436, 38432, 38435,
   8211     20310, 20283, 20322, 20297, 20307, 20324, 20286, 20327, 20306, 20319,
   8212     20289, 20312, 20269, 20275, 20287, 20321, 20879, 20921, 21020, 21022,
   8213     21025, {f: 2, c: 21165}, 21257, 21347, 21362, {f: 2, c: 21390}, 21552,
   8214     21559, 21546, 21588, 21573, 21529, 21532, 21541, 21528, 21565, 21583,
   8215     21569, 21544, 21540, 21575, 22254, 22247, 22245, 22337, 22341, 22348,
   8216     22345, 22347, 22354, 22790, 22848, 22950, 22936, 22944, 22935, 22926,
   8217     22946, 22928, 22927, 22951, 22945, 23438, 23442, 23592, 23594, 23693,
   8218     23695, 23688, 23691, 23689, 23698, 23690, 23686, 23699, 23701, 24032,
   8219     24074, 24078, 24203, 24201, 24204, 24200, 24205, 24325, 24349, 24440,
   8220     24438, 24530, 24529, 24528, 24557, 24552, 24558, 24563, 24545, 24548,
   8221     24547, 24570, 24559, 24567, 24571, 24576, 24564, 25146, 25219, 25228,
   8222     {f: 2, c: 25230}, 25236, 25223, 25201, 25211, 25210, 25200, 25217, 25224,
   8223     25207, 25213, 25202, 25204, 26096, 26100, 26099, 26098, 26101, 26437,
   8224     26439, 26457, 26453, 26444, 26440, 26461, 26445, 26458, 26443, 27600,
   8225     {f: 2, c: 27673}, 27768, 27751, 27755, 27780, 27787, 27791, 27761, 27759,
   8226     27753, 27802, 27757, 27783, 27797, [27804, 57900], 27750, 27763, 27749,
   8227     27771, 27790, 28788, 28794, 29283, 29375, 29373, 29379, 29382, 29377,
   8228     29370, 29381, 29589, 29591, {f: 2, c: 29587}, 29586, 30010, 30009,
   8229     {f: 2, c: 30100}, 30337, 31037, 32820, 32917, 32921, 32912, 32914, 32924,
   8230     33424, 33423, 33413, 33422, 33425, 33427, 33418, {f: 2, c: 33411},
   8231     [12184, 35960], 36809, 36799, 37023, 37025, 37029, 37022, 37031, 37024,
   8232     38448, 38440, 38447, 38445, 20019, 20376, 20348, 20357, 20349, 20352,
   8233     20359, 20342, 20340, 20361, 20356, 20343, 20300, 20375, 20330, 20378,
   8234     20345, 20353, 20344, 20368, 20380, 20372, 20382, 20370, 20354, 20373,
   8235     20331, 20334, 20894, 20924, 20926, 21045, {f: 2, c: 21042}, 21062, 21041,
   8236     21180, {f: 2, c: 21258}, 21308, 21394, 21396, 21639, 21631, 21633, 21649,
   8237     21634, 21640, 21611, 21626, 21630, 21605, 21612, 21620, 21606, 21645,
   8238     21615, 21601, 21600, 21656, 21603, 21607, 21604, 22263, 22265, 22383,
   8239     22386, 22381, 22379, 22385, 22384, 22390, 22400, 22389, 22395,
   8240     {f: 2, c: 22387}, 22370, 22376, 22397, 22796, 22853, 22965, 22970, 22991,
   8241     22990, 22962, 22988, 22977, 22966, 22972, 22979, 22998, 22961, 22973,
   8242     22976, 22984, 22964, 22983, 23394, 23397, 23443, 23445, 23620, 23623,
   8243     23726, 23716, 23712, 23733, 23727, 23720, 23724, 23711, 23715, 23725,
   8244     23714, 23722, 23719, 23709, 23717, 23734, 23728, 23718, 24087, 24084,
   8245     24089, 24360, {f: 3, c: 24354}, 24404, 24450, 24446, 24445, 24542, 24549,
   8246     24621, 24614, 24601, 24626, 24587, 24628, 24586, 24599, 24627, 24602,
   8247     24606, 24620, 24610, 24589, 24592, 24622, 24595, 24593, 24588, 24585,
   8248     24604, 25108, 25149, 25261, 25268, 25297, 25278, 25258, 25270, 25290,
   8249     25262, 25267, 25263, 25275, 25257, 25264, 25272, 25917, 26024, 26043,
   8250     26121, 26108, 26116, 26130, 26120, 26107, 26115, 26123, 26125, 26117,
   8251     26109, 26129, 26128, 26358, 26378, 26501, 26476, 26510, 26514, 26486,
   8252     26491, 26520, 26502, 26500, 26484, 26509, 26508, 26490, 26527, 26513,
   8253     26521, 26499, 26493, 26497, {f: 2, c: 26488}, 26516, 27429, 27520, 27518,
   8254     27614, 27677, 27795, 27884, 27883, 27886, 27865, 27830, 27860, 27821,
   8255     27879, 27831, 27856, 27842, 27834, 27843, 27846, 27885, 27890, 27858,
   8256     27869, 27828, 27786, 27805, 27776, 27870, 27840, 27952, 27853, 27847,
   8257     27824, 27897, 27855, 27881, 27857, 28820, 28824, 28805, 28819, 28806,
   8258     28804, 28817, 28822, 28802, 28826, 28803, 29290, 29398, 29387, 29400,
   8259     29385, 29404, 29394, 29396, 29402, 29388, 29393, 29604, 29601, 29613,
   8260     29606, 29602, 29600, 29612, 29597, 29917, 29928, {f: 2, c: 30015}, 30014,
   8261     30092, 30104, 30383, 30451, 30449, 30448, 30453, 30712, 30716, 30713,
   8262     30715, 30714, 30711, 31042, 31039, 31173, 31352, 31355, 31483, 31861,
   8263     31997, 32821, 32911, 32942, 32931, 32952, 32949, 32941, 33312, 33440,
   8264     33472, 33451, 33434, 33432, 33435, 33461, 33447, 33454, 33468, 33438,
   8265     33466, 33460, 33448, 33441, 33449, 33474, 33444, 33475, 33462, 33442,
   8266     34416, 34415, {f: 2, c: 34413}, 35926, 36818, 36811, 36819, 36813, 36822,
   8267     36821, 36823, 37042, 37044, 37039, 37043, 37040, 38457, 38461, 38460,
   8268     38458, 38467, 20429, 20421, 20435, 20402, 20425, 20427, 20417, 20436,
   8269     20444, 20441, [20411, 60346], 20403, 20443, 20423, 20438, 20410, 20416,
   8270     20409, 20460, 21060, 21065, 21184, 21186, 21309, 21372, 21399, 21398,
   8271     21401, 21400, 21690, 21665, 21677, 21669, 21711, 21699, 33549, 21687,
   8272     21678, 21718, 21686, {f: 2, c: 21701}, 21664, 21616, 21692, 21666, 21694,
   8273     21618, 21726, 21680, 22453, {f: 2, c: 22430}, 22436, 22412, 22423, 22429,
   8274     22427, 22420, 22424, 22415, 22425, 22437, 22426, 22421, 22772, 22797,
   8275     22867, 23009, 23006, 23022, 23040, 23025, 23005, 23034, 23037, 23036,
   8276     23030, 23012, 23026, 23031, 23003, 23017, 23027, 23029, 23008, 23038,
   8277     23028, 23021, 23464, 23628, 23760, 23768, 23756, 23767, 23755, 23771,
   8278     23774, 23770, 23753, 23751, 23754, 23766, {f: 2, c: 23763}, 23759, 23752,
   8279     23750, 23758, 23775, 23800, 24057, {f: 3, c: 24097}, 24096, 24100, 24240,
   8280     24228, 24226, 24219, 24227, 24229, 24327, 24366, 24406, 24454, 24631,
   8281     24633, 24660, 24690, 24670, 24645, 24659, 24647, 24649, 24667, 24652,
   8282     24640, 24642, 24671, 24612, 24644, 24664, 24678, 24686, {f: 2, c: 25154},
   8283     25295, 25357, 25355, 25333, 25358, 25347, 25323, 25337, 25359, 25356,
   8284     25336, 25334, 25344, {f: 2, c: 25363}, 25338, 25365, 25339, 25328, 25921,
   8285     25923, 26026, 26047, 26166, 26145, 26162, 26165, 26140, 26150, 26146,
   8286     26163, 26155, 26170, 26141, 26164, 26169, 26158, {f: 2, c: 26383}, 26561,
   8287     26610, 26568, 26554, 26588, 26555, 26616, 26584, 26560, 26551, 26565,
   8288     26603, 26596, 26591, 26549, 26573, 26547, 26615, 26614, 26606, 26595,
   8289     26562, 26553, 26574, 26599, 26608, 26546, 26620, 26566, 26605, 26572,
   8290     26542, 26598, 26587, 26618, {f: 2, c: 26569}, 26563, 26602, 26571, 27432,
   8291     27522, 27524, 27574, 27606, 27608, 27616, {f: 2, c: 27680}, 27944, 27956,
   8292     27949, 27935, 27964, 27967, 27922, 27914, 27866, 27955, 27908, 27929,
   8293     27962, 27930, 27921, 27904, 27933, 27970, 27905, 27928, 27959, 27907,
   8294     27919, 27968, 27911, 27936, 27948, 27912, 27938, 27913, 27920, 28855,
   8295     28831, 28862, 28849, 28848, 28833, {f: 2, c: 28852}, 28841, 29249,
   8296     {f: 2, c: 29257}, 29292, 29296, 29299, 29294, 29386, 29412, 29416, 29419,
   8297     29407, 29418, 29414, 29411, 29573, 29644, 29634, 29640, 29637, 29625,
   8298     29622, 29621, 29620, 29675, 29631, 29639, 29630, 29635, 29638, 29624,
   8299     29643, 29932, 29934, 29998, {f: 2, c: 30023}, 30119, 30122, 30329, 30404,
   8300     30472, {f: 3, c: 30467}, 30474, 30455, 30459, 30458, {f: 2, c: 30695},
   8301     30726, {f: 2, c: 30737}, 30725, 30736, 30735, 30734, [30729, 58095], 30723,
   8302     30739, 31050, 31052, 31051, 31045, 31044, 31189, 31181, 31183, 31190,
   8303     31182, 31360, 31358, 31441, {f: 2, c: 31488}, 31866, {f: 2, c: 31864},
   8304     {f: 3, c: 31871}, 32003, 32008, 32001, 32600, 32657, 32653, 32702, 32775,
   8305     {f: 2, c: 32782}, 32788, 32823, 32984, 32967, 32992, 32977, 32968, 32962,
   8306     32976, 32965, 32995, 32985, 32988, 32970, 32981, 32969, 32975, 32983,
   8307     32998, 32973, 33279, 33313, 33428, 33497, 33534, 33529, 33543, 33512,
   8308     33536, 33493, 33594, 33515, 33494, 33524, 33516, 33505, 33522, 33525,
   8309     33548, 33531, 33526, 33520, 33514, 33508, 33504, 33530, 33523, 33517,
   8310     34423, 34420, 34428, 34419, 34881, 34894, 34919, 34922, 34921, 35283,
   8311     35332, 35335, 36210, 36835, 36833, 36846, 36832, 37105, 37053, 37055,
   8312     37077, 37061, 37054, 37063, 37067, 37064, [37332, 60294], 37331, 38484,
   8313     38479, 38481, 38483, 38474, 38478, 20510, 20485, 20487, 20499, 20514,
   8314     20528, 20507, 20469, 20468, 20531, 20535, 20524, {f: 2, c: 20470}, 20503,
   8315     20508, 20512, 20519, 20533, 20527, 20529, 20494, 20826, 20884, 20883,
   8316     20938, {f: 2, c: 20932}, 20936, 20942, 21089, 21082, 21074,
   8317     {f: 2, c: 21086}, 21077, 21090, 21197, 21262, 21406, 21798, 21730, 21783,
   8318     21778, 21735, 21747, 21732, 21786, 21759, 21764, 21768, 21739, 21777,
   8319     21765, 21745, 21770, 21755, {f: 2, c: 21751}, 21728, 21774, 21763, 21771,
   8320     {f: 2, c: 22273}, 22476, 22578, 22485, 22482, 22458, 22470, 22461, 22460,
   8321     22456, 22454, 22463, 22471, 22480, 22457, 22465, 22798, 22858, 23065,
   8322     23062, {f: 2, c: 23085}, 23061, 23055, 23063, 23050, 23070, 23091, 23404,
   8323     23463, 23469, 23468, 23555, 23638, 23636, 23788, 23807, 23790, 23793,
   8324     23799, 23808, 23801, 24105, 24104, 24232, 24238, 24234, 24236, 24371,
   8325     24368, 24423, 24669, 24666, 24679, 24641, 24738, 24712, 24704, 24722,
   8326     24705, 24733, 24707, 24725, 24731, 24727, 24711, 24732, 24718, 25113,
   8327     25158, 25330, 25360, 25430, 25388, {f: 2, c: 25412}, 25398, 25411, 25572,
   8328     25401, 25419, 25418, 25404, 25385, 25409, 25396, 25432, 25428, 25433,
   8329     25389, 25415, 25395, 25434, 25425, 25400, 25431, 25408, 25416, 25930,
   8330     25926, 26054, {f: 2, c: 26051}, 26050, 26186, 26207, 26183, 26193,
   8331     {f: 2, c: 26386}, 26655, 26650, 26697, {f: 2, c: 26674}, 26683, 26699,
   8332     26703, 26646, 26673, 26652, 26677, 26667, 26669, 26671, 26702, 26692,
   8333     26676, 26653, 26642, 26644, 26662, 26664, 26670, 26701, 26682, 26661,
   8334     26656, 27436, 27439, 27437, 27441, 27444, 27501, 32898, 27528, 27622,
   8335     27620, 27624, 27619, 27618, 27623, 27685, 28026, {f: 2, c: 28003}, 28022,
   8336     27917, 28001, 28050, 27992, 28002, 28013, 28015, 28049, 28045, 28143,
   8337     28031, 28038, 27998, [28007, 59078], 28000, 28055, 28016, 28028, 27999,
   8338     28034, 28056, 27951, 28008, 28043, 28030, 28032, 28036, 27926, 28035,
   8339     28027, 28029, 28021, 28048, 28892, 28883, 28881, 28893, 28875, 32569,
   8340     28898, 28887, 28882, 28894, 28896, 28884, 28877, {f: 3, c: 28869}, 28890,
   8341     28878, 28897, 29250, 29304, 29303, 29302, 29440, 29434, 29428, 29438,
   8342     29430, 29427, 29435, 29441, 29651, 29657, 29669, 29654, 29628, 29671,
   8343     29667, 29673, 29660, 29650, 29659, 29652, 29661, 29658, {f: 2, c: 29655},
   8344     29672, {f: 2, c: 29918}, {f: 2, c: 29940}, 29985, 30043, 30047, 30128,
   8345     30145, 30139, 30148, 30144, 30143, 30134, 30138, 30346, 30409, 30493,
   8346     30491, 30480, 30483, 30482, 30499, 30481, 30485, {f: 2, c: 30489}, 30498,
   8347     30503, 30755, 30764, 30754, 30773, 30767, 30760, 30766, 30763, 30753,
   8348     30761, 30771, 30762, 30769, 31060, 31067, 31055, 31068, 31059, 31058,
   8349     31057, {f: 2, c: 31211}, 31200, 31214, 31213, 31210, 31196, 31198, 31197,
   8350     31366, 31369, 31365, {f: 2, c: 31371}, 31370, 31367, 31448, 31504, 31492,
   8351     31507, 31493, 31503, 31496, 31498, 31502, 31497, 31506, 31876, 31889,
   8352     31882, 31884, 31880, 31885, 31877, 32030, 32029, 32017, 32014, 32024,
   8353     32022, 32019, 32031, 32018, 32015, 32012, 32604, 32609, 32606, 32608,
   8354     32605, 32603, 32662, 32658, 32707, 32706, 32704, 32790, 32830, 32825,
   8355     33018, 33010, 33017, 33013, 33025, 33019, 33024, 33281, 33327, 33317,
   8356     33587, 33581, 33604, 33561, 33617, 33573, 33622, 33599, 33601, 33574,
   8357     33564, 33570, 33602, 33614, 33563, 33578, 33544, 33596, 33613, 33558,
   8358     33572, 33568, 33591, 33583, 33577, 33607, 33605, 33612, 33619, 33566,
   8359     33580, 33611, 33575, 33608, 34387, 34386, 34466, 34472, 34454, 34445,
   8360     34449, 34462, 34439, 34455, 34438, 34443, 34458, 34437, 34469, 34457,
   8361     34465, 34471, 34453, 34456, 34446, 34461, 34448, 34452, {f: 2, c: 34883},
   8362     34925, {f: 2, c: 34933}, 34930, 34944, 34929, 34943, 34927, 34947, 34942,
   8363     34932, 34940, 35346, 35911, 35927, 35963, 36004, 36003, 36214, 36216,
   8364     36277, 36279, 36278, 36561, 36563, 36862, 36853, 36866, 36863, 36859,
   8365     36868, 36860, 36854, 37078, 37088, {f: 2, c: 37081}, 37091, 37087, 37093,
   8366     37080, 37083, 37079, 37084, 37092, 37200, {f: 2, c: 37198}, 37333, 37346,
   8367     37338, 38492, 38495, 38588, 39139, [12221, 39647], [12223, 39727], 20095,
   8368     20592, 20586, 20577, 20574, 20576, 20563, 20555, 20573, 20594, 20552,
   8369     20557, 20545, 20571, 20554, 20578, 20501, 20549, 20575, 20585, 20587,
   8370     {f: 2, c: 20579}, 20550, 20544, 20590, 20595, 20567, 20561, 20944, 21099,
   8371     21101, 21100, 21102, 21206, 21203, 21293, 21404, {f: 2, c: 21877}, 21820,
   8372     21837, 21840, 21812, 21802, 21841, 21858, 21814, 21813, 21808, 21842,
   8373     21829, 21772, 21810, 21861, 21838, 21817, 21832, 21805, 21819, 21824,
   8374     21835, 22282, 22279, 22523, 22548, 22498, 22518, 22492, 22516, 22528,
   8375     22509, 22525, 22536, 22520, 22539, 22515, 22479, 22535, 22510, 22499,
   8376     22514, 22501, 22508, 22497, 22542, 22524, 22544, 22503, 22529, 22540,
   8377     22513, 22505, 22512, 22541, 22532, 22876, 23136, 23128, 23125,
   8378     [23143, 60437], 23134, 23096, 23093, 23149, 23120, 23135, 23141, 23148,
   8379     23123, 23140, 23127, 23107, 23133, 23122, 23108, 23131, 23112, 23182,
   8380     23102, 23117, 23097, 23116, 23152, 23145, 23111, 23121, 23126, 23106,
   8381     23132, 23410, 23406, 23489, 23488, 23641, 23838, 23819, 23837, 23834,
   8382     23840, 23820, 23848, 23821, 23846, 23845, 23823, 23856, 23826, 23843,
   8383     23839, 23854, 24126, 24116, 24241, 24244, 24249, {f: 2, c: 24242}, 24374,
   8384     24376, 24475, 24470, 24479, 24714, 24720, 24710, 24766, 24752, 24762,
   8385     {f: 2, c: 24787}, 24783, 24804, 24793, 24797, 24776, 24753, 24795, 24759,
   8386     24778, 24767, 24771, 24781, 24768, 25394, 25445, 25482, 25474, 25469,
   8387     25533, 25502, 25517, 25501, 25495, 25515, 25486, 25455, 25479, 25488,
   8388     25454, 25519, 25461, 25500, 25453, 25518, 25468, 25508, 25403, 25503,
   8389     25464, 25477, 25473, 25489, 25485, 25456, 25939, 26061, 26213, 26209,
   8390     26203, 26201, 26204, 26210, 26392, 26745, 26759, 26768, 26780,
   8391     {f: 2, c: 26733}, 26798, 26795, 26966, 26735, 26787, 26796, 26793, 26741,
   8392     26740, 26802, 26767, 26743, 26770, 26748, 26731, 26738, 26794, 26752,
   8393     26737, 26750, 26779, 26774, 26763, 26784, 26761, 26788, 26744, 26747,
   8394     26769, 26764, 26762, 26749, 27446, 27443, {f: 2, c: 27447}, 27537, 27535,
   8395     {f: 2, c: 27533}, 27532, 27690, 28096, 28075, 28084, 28083, 28276, 28076,
   8396     28137, 28130, 28087, 28150, 28116, 28160, 28104, 28128, 28127, 28118,
   8397     28094, 28133, {f: 2, c: 28124}, 28123, 28148, 28106, 28093, 28141, 28144,
   8398     28090, 28117, 28098, 28111, 28105, 28112, 28146, 28115, 28157, 28119,
   8399     28109, 28131, 28091, 28922, 28941, 28919, 28951, 28916, 28940, 28912,
   8400     28932, 28915, 28944, 28924, 28927, 28934, 28947, 28928, 28920, 28918,
   8401     28939, 28930, 28942, 29310, {f: 2, c: 29307}, 29311, 29469, 29463, 29447,
   8402     29457, 29464, 29450, 29448, 29439, 29455, 29470, 29576, 29686, 29688,
   8403     29685, 29700, 29697, 29693, 29703, 29696, 29690, 29692, 29695, 29708,
   8404     29707, 29684, 29704, 30052, 30051, 30158, 30162, 30159, {f: 2, c: 30155},
   8405     30161, 30160, 30351, 30345, 30419, 30521, 30511, 30509, {f: 2, c: 30513},
   8406     30516, 30515, 30525, 30501, 30523, 30517, 30792, 30802, 30793, 30797,
   8407     30794, 30796, 30758, 30789, 30800, 31076, 31079, {f: 2, c: 31081}, 31075,
   8408     31083, 31073, 31163, 31226, 31224, {f: 2, c: 31222}, 31375, 31380, 31376,
   8409     31541, 31547, 31540, 31525, 31536, 31522, 31524, 31539, 31512, 31530,
   8410     31517, 31537, 31531, 31533, 31535, 31538, 31544, 31514, 31523, 31892,
   8411     31896, 31894, 31907, 32053, 32061, 32056, 32054, 32058, 32069, 32044,
   8412     32041, 32065, 32071, {f: 2, c: 32062}, 32074, 32059, 32040, 32611, 32661,
   8413     {f: 2, c: 32668}, 32667, {f: 2, c: 32714}, 32717, {f: 2, c: 32720}, 32711,
   8414     32719, 32713, 32799, 32798, 32795, 32839, 32835, 32840, 33048, 33061,
   8415     33049, 33051, 33069, 33055, 33068, 33054, 33057, 33045, 33063, 33053,
   8416     33058, 33297, 33336, 33331, 33338, 33332, 33330, 33396, 33680, 33699,
   8417     33704, 33677, 33658, 33651, 33700, 33652, 33679, 33665, 33685, 33689,
   8418     33653, 33684, 33705, 33661, 33667, 33676, 33693, 33691, 33706, 33675,
   8419     33662, 33701, 33711, 33672, 33687, 33712, 33663, 33702, 33671, 33710,
   8420     33654, 34393, 34390, 34495, 34487, 34498, 34497, 34501, 34490, 34480,
   8421     34504, 34489, 34483, 34488, 34508, 34484, {f: 2, c: 34491}, 34499,
   8422     {f: 2, c: 34493}, 34898, 34953, 34965, 34984, 34978, 34986, 34970, 34961,
   8423     34977, 34975, 34968, 34983, 34969, 34971, 34967, 34980, 34988, 34956,
   8424     34963, 34958, 35202, 35286, 35289, 35285, 35376, 35367, 35372, 35358,
   8425     35897, 35899, {f: 2, c: 35932}, 35965, 36005, 36221, 36219, 36217, 36284,
   8426     36290, 36281, 36287, 36289, 36568, 36574, 36573, 36572, 36567,
   8427     {f: 2, c: 36576}, 36900, 36875, 36881, 36892, 36876, 36897, 37103, 37098,
   8428     37104, 37108, {f: 2, c: 37106}, 37076, {f: 2, c: 37099}, 37097, 37206,
   8429     37208, 37210, 37203, 37205, 37356, 37364, 37361, 37363, 37368, 37348,
   8430     37369, {f: 2, c: 37354}, 37367, 37352, 37358, 38266, 38278, 38280, 38524,
   8431     38509, 38507, 38513, 38511, 38591, 38762, 38916, 39141, 39319, 20635,
   8432     20629, 20628, 20638, 20619, 20643, 20611, 20620, 20622, 20637, 20584,
   8433     20636, 20626, 20610, 20615, 20831, 20948, 21266, 21265, 21412, 21415,
   8434     21905, 21928, 21925, 21933, 21879, 22085, 21922, 21907, 21896, 21903,
   8435     21941, 21889, 21923, 21906, 21924, 21885, 21900, 21926, 21887, 21909,
   8436     21921, 21902, 22284, 22569, 22583, 22553, 22558, 22567, 22563, 22568,
   8437     22517, 22600, 22565, 22556, 22555, 22579, 22591, 22582, 22574, 22585,
   8438     22584, 22573, 22572, 22587, 22881, 23215, 23188, 23199, 23162, 23202,
   8439     23198, 23160, 23206, 23164, 23205, 23212, 23189, 23214, 23095, 23172,
   8440     23178, 23191, 23171, 23179, 23209, 23163, 23165, 23180, 23196, 23183,
   8441     23187, 23197, 23530, 23501, 23499, 23508, 23505, 23498, 23502, 23564,
   8442     23600, 23863, 23875, 23915, 23873, 23883, 23871, 23861, 23889, 23886,
   8443     23893, 23859, 23866, 23890, 23869, 23857, 23897, 23874, 23865, 23881,
   8444     23864, 23868, 23858, 23862, 23872, 23877, 24132, 24129, [24408, 57673],
   8445     24486, 24485, 24491, 24777, 24761, 24780, 24802, 24782, 24772, 24852,
   8446     24818, 24842, 24854, 24837, 24821, 24851, 24824, 24828, 24830, 24769,
   8447     24835, 24856, 24861, 24848, 24831, 24836, 24843, 25162, 25492, 25521,
   8448     25520, 25550, 25573, 25576, 25583, 25539, 25757, 25587, 25546, 25568,
   8449     25590, 25557, 25586, 25589, 25697, 25567, 25534, 25565, 25564, 25540,
   8450     25560, 25555, 25538, 25543, 25548, 25547, 25544, 25584, 25559, 25561,
   8451     25906, 25959, 25962, 25956, 25948, 25960, 25957, 25996, {f: 2, c: 26013},
   8452     26030, 26064, 26066, 26236, 26220, 26235, 26240, 26225, 26233, 26218,
   8453     26226, 26369, 26892, 26835, 26884, 26844, 26922, 26860, 26858, 26865,
   8454     26895, 26838, 26871, 26859, 26852, 26870, 26899, 26896, 26867, 26849,
   8455     26887, 26828, 26888, 26992, 26804, 26897, 26863, 26822, 26900, 26872,
   8456     26832, 26877, 26876, 26856, 26891, 26890, 26903, 26830, 26824,
   8457     {f: 2, c: 26845}, 26854, 26868, 26833, 26886, 26836, 26857, 26901, 26917,
   8458     26823, 27449, 27451, 27455, 27452, 27540, 27543, 27545, 27541, 27581,
   8459     27632, {f: 2, c: 27634}, 27696, 28156, {f: 2, c: 28230}, 28191, 28233,
   8460     28296, {f: 2, c: 28220}, 28229, 28258, 28203, 28223, 28225, 28253, 28275,
   8461     28188, 28211, 28235, 28224, 28241, 28219, 28163, 28206, 28254, 28264,
   8462     28252, 28257, 28209, 28200, 28256, 28273, 28267, 28217, 28194, 28208,
   8463     28243, 28261, 28199, 28280, 28260, 28279, 28245, 28281, 28242, 28262,
   8464     {f: 2, c: 28213}, 28250, 28960, 28958, 28975, 28923, 28974, 28977, 28963,
   8465     28965, 28962, 28978, 28959, 28968, 28986, 28955, 29259, 29274,
   8466     {f: 2, c: 29320}, 29318, 29317, 29323, 29458, 29451, 29488, 29474, 29489,
   8467     29491, 29479, 29490, 29485, 29478, 29475, 29493, 29452, 29742, 29740,
   8468     29744, 29739, 29718, 29722, 29729, 29741, 29745, 29732, 29731, 29725,
   8469     29737, 29728, 29746, 29947, 29999, 30063, 30060, 30183, 30170, 30177,
   8470     30182, 30173, 30175, 30180, 30167, 30357, 30354, 30426, {f: 2, c: 30534},
   8471     30532, 30541, 30533, 30538, 30542, {f: 2, c: 30539}, 30686, 30700, 30816,
   8472     {f: 2, c: 30820}, 30812, 30829, 30833, 30826, 30830, 30832, 30825, 30824,
   8473     30814, 30818, 31092, 31091, 31090, 31088, 31234, 31242, 31235, 31244,
   8474     31236, 31385, 31462, 31460, 31562, 31559, 31556, 31560, 31564, 31566,
   8475     31552, 31576, 31557, 31906, 31902, 31912, 31905, 32088, 32111, 32099,
   8476     32083, 32086, 32103, 32106, 32079, 32109, 32092, 32107, 32082, 32084,
   8477     32105, 32081, 32095, 32078, {f: 2, c: 32574}, {f: 2, c: 32613}, 32674,
   8478     {f: 2, c: 32672}, 32727, 32849, {f: 2, c: 32847}, 33022, 32980, 33091,
   8479     33098, 33106, 33103, 33095, 33085, 33101, 33082, 33254, 33262,
   8480     {f: 3, c: 33271}, 33284, {f: 2, c: 33340}, 33343, 33397, 33595,
   8481     [33743, 60382], 33785, 33827, 33728, 33768, 33810, 33767, 33764, 33788,
   8482     33782, 33808, 33734, 33736, 33771, 33763, 33727, 33793, 33757, 33765,
   8483     33752, 33791, 33761, 33739, 33742, 33750, 33781, 33737, 33801,
   8484     [33807, 58332], 33758, 33809, 33798, 33730, 33779, 33749, 33786, 33735,
   8485     33745, 33770, 33811, 33690, 33731, 33772, 33774, 33732, 33787, 33751,
   8486     33762, 33819, 33755, 33790, 34520, 34530, 34534, 34515, 34531, 34522,
   8487     34538, 34525, 34539, 34524, 34540, 34537, 34519, 34536, 34513, 34888,
   8488     34902, 34901, 35002, 35031, 35001, 35000, 35008, 35006, 34998, 35004,
   8489     34999, 35005, 34994, 35073, 35017, 35221, 35224, 35223, 35293,
   8490     {f: 2, c: 35290}, 35406, 35405, 35385, 35417, 35392, {f: 2, c: 35415},
   8491     {f: 2, c: 35396}, 35410, 35400, 35409, 35402, 35404, 35407, 35935, 35969,
   8492     35968, 36026, 36030, 36016, 36025, 36021, 36228, 36224, 36233, 36312,
   8493     36307, 36301, 36295, 36310, 36316, 36303, 36309, 36313, 36296, 36311,
   8494     36293, 36591, 36599, 36602, 36601, 36582, 36590, 36581, 36597,
   8495     {f: 2, c: 36583}, 36598, 36587, 36593, 36588, 36596, 36585, 36909, 36916,
   8496     36911, 37126, 37164, [37124, 60367], 37119, 37116, 37128, 37113, 37115,
   8497     37121, 37120, 37127, 37125, 37123, 37217, 37220, 37215, 37218, 37216,
   8498     37377, 37386, 37413, 37379, 37402, 37414, 37391, 37388, 37376, 37394,
   8499     37375, 37373, 37382, 37380, 37415, 37378, 37404, 37412, 37401, 37399,
   8500     37381, 37398, 38267, 38285, 38284, 38288, 38535, 38526, {f: 2, c: 38536},
   8501     38531, 38528, 38594, 38600, 38595, 38641, 38640, 38764, 38768, 38766,
   8502     38919, 39081, 39147, 40166, [12235, 40697], {f: 2, c: 20099}, 20150, 20669,
   8503     20671, 20678, 20654, 20676, 20682, 20660, 20680, 20674, 20656, 20673,
   8504     20666, 20657, 20683, 20681, 20662, 20664, 20951, 21114, 21112,
   8505     {f: 2, c: 21115}, 21955, 21979, 21964, 21968, 21963, 21962, 21981,
   8506     [21952, 64013], 21972, 21956, 21993, 21951, 21970, 21901, 21967, 21973,
   8507     21986, 21974, 21960, 22002, 21965, 21977, 21954, 22292, 22611, 22632,
   8508     22628, 22607, 22605, 22601, 22639, 22613, 22606, 22621, 22617, 22629,
   8509     22619, 22589, 22627, 22641, 22780, 23239, 23236, 23243, 23226, 23224,
   8510     23217, 23221, 23216, 23231, 23240, 23227, 23238, 23223, 23232, 23242,
   8511     23220, 23222, 23245, 23225, 23184, 23510, {f: 2, c: 23512}, 23583, 23603,
   8512     23921, 23907, 23882, 23909, 23922, 23916, 23902, 23912, 23911, 23906,
   8513     24048, 24143, 24142, 24138, 24141, 24139, 24261, 24268, 24262, 24267,
   8514     24263, 24384, 24495, 24493, 24823, {f: 2, c: 24905}, 24875, 24901, 24886,
   8515     24882, 24878, 24902, 24879, 24911, 24873, 24896, 25120, 37224, 25123,
   8516     25125, 25124, 25541, 25585, 25579, 25616, 25618, 25609, 25632, 25636,
   8517     25651, 25667, 25631, 25621, 25624, 25657, 25655, {f: 2, c: 25634}, 25612,
   8518     25638, 25648, 25640, 25665, 25653, 25647, 25610, 25626, 25664, 25637,
   8519     25639, 25611, 25575, 25627, 25646, 25633, 25614, 25967, 26002, 26067,
   8520     26246, 26252, 26261, 26256, 26251, 26250, 26265, 26260, 26232, 26400,
   8521     26982, 26975, 26936, 26958, 26978, 26993, 26943, 26949, 26986, 26937,
   8522     26946, 26967, 26969, 27002, {f: 2, c: 26952}, 26933, 26988, 26931, 26941,
   8523     26981, 26864, 27000, 26932, 26985, 26944, 26991, 26948, 26998, 26968,
   8524     26945, 26996, 26956, 26939, 26955, 26935, 26972, 26959, 26961, 26930,
   8525     26962, 26927, 27003, 26940, 27462, 27461, 27459, 27458, 27464, 27457,
   8526     27547, {f: 2, c: 27643}, 27641, {f: 2, c: 27639}, 28315, 28374, 28360,
   8527     28303, 28352, 28319, {f: 2, c: 28307}, 28320, 28337, 28345, 28358, 28370,
   8528     28349, 28353, 28318, 28361, 28343, 28336, 28365, 28326, 28367, 28338,
   8529     28350, 28355, 28380, 28376, 28313, 28306, 28302, 28301, 28324, 28321,
   8530     28351, 28339, 28368, 28362, 28311, 28334, 28323, 28999, 29012, 29010,
   8531     29027, 29024, 28993, 29021, [29026, 61080], 29042, 29048, 29034, 29025,
   8532     28994, 29016, 28995, 29003, 29040, 29023, 29008, 29011, 28996, 29005,
   8533     29018, 29263, 29325, 29324, 29329, 29328, 29326, 29500, 29506, 29499,
   8534     29498, 29504, 29514, 29513, 29764, {f: 2, c: 29770}, 29778, 29777, 29783,
   8535     29760, {f: 2, c: 29775}, 29774, 29762, 29766, 29773, 29780, 29921, 29951,
   8536     29950, 29949, 29981, 30073, 30071, 27011, 30191, 30223, 30211, 30199,
   8537     30206, 30204, [30201, 60782], 30200, 30224, 30203, 30198, 30189, 30197,
   8538     30205, 30361, 30389, 30429, 30549, {f: 2, c: 30559}, 30546, 30550, 30554,
   8539     30569, 30567, 30548, 30553, 30573, 30688, 30855, 30874, 30868, 30863,
   8540     30852, 30869, {f: 2, c: 30853}, 30881, 30851, 30841, 30873, 30848, 30870,
   8541     30843, 31100, 31106, 31101, 31097, 31249, {f: 2, c: 31256}, 31250, 31255,
   8542     31253, 31266, 31251, 31259, 31248, 31395, 31394, 31390, 31467, 31590,
   8543     31588, 31597, 31604, 31593, 31602, 31589, 31603, 31601, 31600, 31585,
   8544     31608, 31606, 31587, 31922, 31924, 31919, 32136, 32134, 32128, 32141,
   8545     32127, 32133, 32122, 32142, 32123, 32131, 32124, 32140, 32148, 32132,
   8546     32125, 32146, 32621, 32619, {f: 2, c: 32615}, 32620, 32678, 32677, 32679,
   8547     {f: 2, c: 32731}, 32801, 33124, 33120, 33143, 33116, 33129, 33115, 33122,
   8548     33138, 26401, 33118, 33142, 33127, 33135, 33092, 33121, 33309, 33353,
   8549     33348, 33344, 33346, 33349, 34033, 33855, 33878, 33910, 33913, 33935,
   8550     33933, 33893, 33873, 33856, 33926, 33895, 33840, 33869, 33917, 33882,
   8551     33881, 33908, 33907, 33885, 34055, 33886, 33847, 33850, 33844, 33914,
   8552     33859, 33912, 33842, 33861, 33833, 33753, 33867, 33839, 33858, 33837,
   8553     33887, 33904, 33849, 33870, 33868, 33874, 33903, 33989, 33934, 33851,
   8554     33863, 33846, 33843, 33896, 33918, 33860, 33835, 33888, 33876, 33902,
   8555     33872, 34571, 34564, 34551, 34572, 34554, 34518, 34549, 34637, 34552,
   8556     34574, 34569, 34561, 34550, 34573, 34565, 35030, 35019, {f: 2, c: 35021},
   8557     35038, 35035, 35034, 35020, 35024, 35205, 35227, 35295, 35301, 35300,
   8558     35297, 35296, 35298, 35292, 35302, 35446, 35462, 35455, 35425, 35391,
   8559     35447, 35458, 35460, 35445, 35459, 35457, 35444, 35450, 35900, 35915,
   8560     35914, 35941, 35940, 35942, 35974, {f: 2, c: 35972}, 36044,
   8561     {f: 2, c: 36200}, 36241, 36236, {f: 2, c: 36238}, 36237, {f: 2, c: 36243},
   8562     36240, 36242, 36336, 36320, 36332, 36337, 36334, 36304, 36329, 36323,
   8563     36322, 36327, 36338, 36331, 36340, 36614, 36607, 36609, 36608, 36613,
   8564     {f: 2, c: 36615}, 36610, [36619, 60507], 36946, 36927, 36932, 36937, 36925,
   8565     37136, 37133, 37135, 37137, 37142, 37140, 37131, 37134, {f: 2, c: 37230},
   8566     37448, 37458, 37424, 37434, 37478, 37427, 37477, 37470, 37507, 37422,
   8567     37450, 37446, 37485, 37484, 37455, 37472, 37479, 37487, 37430, 37473,
   8568     37488, 37425, 37460, 37475, 37456, 37490, 37454, 37459, 37452, 37462,
   8569     37426, 38303, 38300, 38302, 38299, {f: 2, c: 38546}, 38545, 38551, 38606,
   8570     38650, 38653, 38648, 38645, 38771, {f: 2, c: 38775}, 38770, 38927,
   8571     {f: 2, c: 38925}, 39084, 39158, 39161, 39343, 39346, 39344, 39349, 39597,
   8572     39595, 39771, 40170, 40173, 40167, 40576, [12236, 40701], 20710, 20692,
   8573     20695, 20712, 20723, 20699, 20714, 20701, 20708, 20691, 20716, 20720,
   8574     20719, 20707, 20704, 20952, {f: 2, c: 21120}, 21225, 21227, 21296, 21420,
   8575     22055, 22037, 22028, 22034, 22012, 22031, 22044, 22017, 22035, 22018,
   8576     22010, 22045, 22020, 22015, 22009, 22665, 22652, 22672, 22680, 22662,
   8577     22657, 22655, 22644, 22667, 22650, 22663, 22673, 22670, 22646, 22658,
   8578     22664, 22651, 22676, 22671, 22782, 22891, 23260, 23278, 23269, 23253,
   8579     23274, 23258, 23277, 23275, 23283, 23266, 23264, 23259, 23276, 23262,
   8580     23261, 23257, 23272, 23263, 23415, 23520, 23523, 23651, 23938, 23936,
   8581     23933, 23942, 23930, 23937, 23927, 23946, 23945, 23944, 23934, 23932,
   8582     23949, 23929, 23935, {f: 2, c: 24152}, 24147, 24280, 24273, 24279, 24270,
   8583     24284, 24277, 24281, 24274, 24276, 24388, 24387, 24431, 24502, 24876,
   8584     24872, 24897, 24926, 24945, 24947, {f: 2, c: 24914}, 24946, 24940, 24960,
   8585     24948, 24916, 24954, 24923, 24933, 24891, 24938, 24929, 24918, 25129,
   8586     25127, 25131, 25643, 25677, 25691, 25693, 25716, 25718, {f: 2, c: 25714},
   8587     25725, 25717, 25702, 25766, 25678, 25730, 25694, 25692, 25675, 25683,
   8588     25696, 25680, 25727, 25663, 25708, 25707, 25689, 25701, 25719, 25971,
   8589     26016, 26273, 26272, 26271, 26373, 26372, 26402, 27057, 27062, 27081,
   8590     27040, 27086, 27030, 27056, 27052, 27068, 27025, 27033, 27022, 27047,
   8591     27021, 27049, 27070, 27055, 27071, 27076, 27069, 27044, 27092, 27065,
   8592     27082, 27034, 27087, 27059, 27027, 27050, 27041, 27038, 27097, 27031,
   8593     27024, 27074, 27061, 27045, 27078, 27466, 27469, 27467, {f: 3, c: 27550},
   8594     {f: 2, c: 27587}, 27646, 28366, 28405, 28401, 28419, 28453, 28408, 28471,
   8595     28411, 28462, 28425, 28494, {f: 2, c: 28441}, 28455, 28440, 28475, 28434,
   8596     28397, 28426, 28470, 28531, 28409, 28398, 28461, 28480, 28464, 28476,
   8597     28469, 28395, 28423, 28430, 28483, 28421, 28413, 28406, 28473, 28444,
   8598     28412, 28474, 28447, 28429, 28446, 28424, 28449, 29063, 29072, 29065,
   8599     29056, 29061, 29058, 29071, 29051, 29062, 29057, 29079, 29252, 29267,
   8600     29335, 29333, 29331, 29507, 29517, 29521, 29516, 29794, 29811, 29809,
   8601     29813, 29810, 29799, 29806, 29952, {f: 2, c: 29954}, 30077, 30096, 30230,
   8602     30216, 30220, 30229, 30225, 30218, 30228, 30392, 30593, 30588, 30597,
   8603     30594, 30574, 30592, 30575, 30590, 30595, 30898, 30890, 30900, 30893,
   8604     30888, 30846, 30891, 30878, 30885, 30880, 30892, 30882, 30884, 31128,
   8605     {f: 2, c: 31114}, 31126, 31125, 31124, 31123, 31127, 31112, 31122, 31120,
   8606     31275, 31306, 31280, 31279, 31272, 31270, 31400, {f: 2, c: 31403}, 31470,
   8607     31624, 31644, 31626, 31633, 31632, 31638, 31629, 31628, 31643, 31630,
   8608     31621, 31640, 21124, 31641, 31652, 31618, 31931, 31935, 31932, 31930,
   8609     32167, 32183, 32194, 32163, 32170, 32193, 32192, 32197, 32157, 32206,
   8610     32196, 32198, {f: 2, c: 32203}, 32175, 32185, 32150, 32188, 32159, 32166,
   8611     32174, 32169, 32161, 32201, 32627, {f: 2, c: 32738}, 32741, 32734, 32804,
   8612     32861, 32860, 33161, 33158, 33155, 33159, 33165, 33164, 33163, 33301,
   8613     33943, 33956, 33953, 33951, 33978, 33998, 33986, 33964, 33966, 33963,
   8614     33977, 33972, 33985, 33997, 33962, 33946, 33969, 34000, 33949, 33959,
   8615     33979, 33954, 33940, 33991, 33996, 33947, 33961, 33967, [33960, 58327],
   8616     34006, 33944, 33974, 33999, 33952, 34007, 34004, 34002, 34011, 33968,
   8617     33937, 34401, 34611, 34595, 34600, 34667, 34624, 34606, 34590, 34593,
   8618     34585, 34587, 34627, 34604, 34625, 34622, 34630, 34592, 34610, 34602,
   8619     34605, 34620, 34578, 34618, 34609, 34613, 34626, {f: 2, c: 34598}, 34616,
   8620     34596, 34586, 34608, 34577, 35063, 35047, {f: 2, c: 35057}, 35066, 35070,
   8621     35054, 35068, 35062, 35067, 35056, 35052, 35051, 35229, 35233, 35231,
   8622     35230, 35305, 35307, 35304, 35499, 35481, 35467, 35474, 35471, 35478,
   8623     35901, {f: 2, c: 35944}, 36053, 36047, 36055, 36246, 36361, 36354, 36351,
   8624     36365, 36349, 36362, 36355, 36359, 36358, 36357, 36350, 36352, 36356,
   8625     {f: 2, c: 36624}, 36622, 36621, 37155, 37148, 37152, 37154, 37151, 37149,
   8626     37146, 37156, 37153, 37147, 37242, 37234, 37241, 37235, 37541, 37540,
   8627     37494, 37531, 37498, 37536, 37524, 37546, 37517, 37542, 37530, 37547,
   8628     37497, 37527, 37503, 37539, 37614, 37518, 37506, 37525, 37538, 37501,
   8629     37512, 37537, 37514, 37510, 37516, 37529, 37543, 37502, 37511, 37545,
   8630     37533, 37515, 37421, 38558, 38561, 38655, 38744, 38781, 38778, 38782,
   8631     38787, 38784, 38786, 38779, 38788, 38785, 38783, 38862, 38861, 38934,
   8632     {f: 2, c: 39085}, 39170, 39168, 39175, 39325, 39324, 39363, 39353, 39355,
   8633     39354, 39362, 39357, 39367, 39601, 39651, 39655, {f: 2, c: 39742},
   8634     {f: 2, c: 39776}, 39775, {f: 2, c: 40177}, 40181, 40615, 20735, 20739,
   8635     20784, 20728, {f: 2, c: 20742}, 20726, 20734, {f: 2, c: 20747}, 20733,
   8636     20746, {f: 2, c: 21131}, 21233, 21231, 22088, 22082, 22092, 22069, 22081,
   8637     22090, 22089, 22086, 22104, 22106, 22080, 22067, 22077, 22060, 22078,
   8638     22072, 22058, 22074, 22298, 22699, 22685, 22705, 22688, 22691, 22703,
   8639     22700, 22693, 22689, 22783, 23295, 23284, 23293, 23287, 23286, 23299,
   8640     23288, 23298, 23289, 23297, 23303, 23301, 23311, 23655, 23961, 23959,
   8641     23967, 23954, 23970, 23955, 23957, 23968, 23964, 23969, 23962, 23966,
   8642     24169, 24157, 24160, 24156, 32243, 24283, 24286, 24289, 24393, 24498,
   8643     24971, 24963, 24953, 25009, 25008, 24994, 24969, 24987, 24979, 25007,
   8644     25005, 24991, 24978, 25002, 24993, 24973, 24934, 25011, 25133, 25710,
   8645     25712, 25750, 25760, 25733, 25751, 25756, 25743, 25739, 25738, 25740,
   8646     25763, 25759, 25704, 25777, 25752, 25974, 25978, 25977, 25979,
   8647     {f: 2, c: 26034}, 26293, 26288, 26281, 26290, 26295, 26282, 26287, 27136,
   8648     27142, 27159, 27109, 27128, 27157, 27121, 27108, 27168, 27135, 27116,
   8649     27106, 27163, 27165, 27134, 27175, 27122, 27118, 27156, 27127, 27111,
   8650     27200, 27144, 27110, 27131, 27149, 27132, 27115, 27145, 27140, 27160,
   8651     27173, 27151, 27126, 27174, 27143, 27124, 27158, 27473, 27557, 27555,
   8652     27554, 27558, 27649, 27648, 27647, 27650, 28481, 28454, 28542, 28551,
   8653     28614, 28562, 28557, 28553, 28556, 28514, 28495, 28549, 28506, 28566,
   8654     28534, 28524, 28546, 28501, 28530, 28498, 28496, 28503, 28564, 28563,
   8655     28509, 28416, 28513, 28523, 28541, 28519, 28560, 28499, 28555, 28521,
   8656     28543, 28565, 28515, 28535, 28522, 28539, 29106, 29103, 29083, 29104,
   8657     29088, 29082, 29097, 29109, 29085, 29093, 29086, 29092, 29089, 29098,
   8658     29084, 29095, 29107, 29336, 29338, 29528, 29522, {f: 3, c: 29534}, 29533,
   8659     29531, 29537, 29530, 29529, 29538, 29831, {f: 2, c: 29833}, 29830, 29825,
   8660     29821, 29829, 29832, 29820, [29817, 58868], 29960, 29959, 30078, 30245,
   8661     30238, 30233, 30237, 30236, 30243, 30234, 30248, 30235, {f: 3, c: 30364},
   8662     30363, 30605, 30607, 30601, 30600, 30925, 30907, 30927, 30924, 30929,
   8663     30926, 30932, 30920, {f: 2, c: 30915}, 30921, 31130, 31137, 31136, 31132,
   8664     31138, [31131, 59175], 27510, 31289, 31410, 31412, 31411, 31671, 31691,
   8665     31678, 31660, 31694, 31663, 31673, 31690, 31669, 31941, 31944, 31948,
   8666     31947, 32247, 32219, 32234, 32231, 32215, 32225, 32259, 32250, 32230,
   8667     32246, 32241, 32240, 32238, 32223, 32630, 32684, 32688, 32685, 32749,
   8668     32747, 32746, 32748, 32742, 32744, 32868, 32871, 33187, 33183, 33182,
   8669     33173, 33186, 33177, 33175, 33302, 33359, 33363, 33362, 33360, 33358,
   8670     33361, 34084, 34107, 34063, 34048, 34089, 34062, 34057, 34061, 34079,
   8671     34058, 34087, 34076, 34043, 34091, 34042, 34056, 34060, 34036, 34090,
   8672     34034, 34069, 34039, 34027, 34035, 34044, 34066, 34026, 34025, 34070,
   8673     34046, 34088, 34077, 34094, 34050, 34045, 34078, 34038, 34097, 34086,
   8674     {f: 2, c: 34023}, 34032, 34031, 34041, 34072, 34080, 34096, 34059, 34073,
   8675     34095, 34402, 34646, {f: 2, c: 34659}, 34679, 34785, 34675, 34648, 34644,
   8676     34651, 34642, 34657, 34650, 34641, 34654, 34669, 34666, 34640, 34638,
   8677     34655, 34653, 34671, 34668, 34682, 34670, 34652, 34661, 34639, 34683,
   8678     34677, 34658, 34663, 34665, 34906, 35077, 35084, 35092, 35083,
   8679     {f: 3, c: 35095}, 35078, 35094, 35089, 35086, 35081, 35234, 35236, 35235,
   8680     35309, 35312, 35308, 35535, 35526, 35512, 35539, 35537, {f: 2, c: 35540},
   8681     35515, 35543, 35518, 35520, 35525, 35544, 35523, 35514, 35517, 35545,
   8682     35902, 35917, 35983, 36069, 36063, 36057, 36072, 36058, 36061, 36071,
   8683     36256, 36252, 36257, 36251, 36384, 36387, 36389, 36388, 36398, 36373,
   8684     36379, 36374, 36369, 36377, {f: 2, c: 36390}, 36372, 36370, 36376, 36371,
   8685     36380, 36375, 36378, 36652, 36644, 36632, 36634, 36640, 36643,
   8686     {f: 2, c: 36630}, 36979, 36976, 36975, 36967, 36971, 37167, 37163,
   8687     {f: 2, c: 37161}, 37170, 37158, 37166, {f: 2, c: 37253}, 37258,
   8688     {f: 2, c: 37249}, 37252, 37248, 37584, {f: 2, c: 37571}, 37568, 37593,
   8689     37558, 37583, 37617, 37599, 37592, 37609, 37591, 37597, 37580, 37615,
   8690     37570, 37608, 37578, 37576, 37582, 37606, 37581, 37589, 37577, 37600,
   8691     37598, 37607, 37585, 37587, 37557, 37601, 37669, 37574, 37556, 38268,
   8692     38316, 38315, 38318, 38320, 38564, 38562, 38611, 38661, 38664, 38658,
   8693     38746, 38794, 38798, 38792, 38864, 38863, 38942, 38941, 38950, 38953,
   8694     38952, 38944, 38939, 38951, 39090, 39176, 39162, 39185, 39188,
   8695     {f: 2, c: 39190}, 39189, 39388, 39373, 39375, {f: 2, c: 39379}, 39374,
   8696     39369, [39382, 60270], 39384, 39371, 39383, 39372, 39603, 39660, 39659,
   8697     39667, 39666, 39665, 39750, 39747, 39783, 39796, 39793, 39782, 39798,
   8698     39797, 39792, 39784, 39780, 39788, 40188, 40186, 40189, 40191, 40183,
   8699     40199, 40192, 40185, 40187, 40200, 40197, 40196, 40579, 40659,
   8700     {f: 2, c: 40719}, 20764, 20755, 20759, 20762, 20753, 20958, 21300, 21473,
   8701     22128, 22112, 22126, 22131, 22118, 22115, 22125, 22130, 22110, 22135,
   8702     22300, 22299, 22728, 22717, 22729, 22719, 22714, 22722, 22716, 22726,
   8703     23319, 23321, 23323, 23329, 23316, 23315, 23312, 23318, [23336, 59539],
   8704     23322, 23328, 23326, 23535, 23980, 23985, 23977, 23975, 23989, 23984,
   8705     23982, 23978, 23976, 23986, 23981, 23983, 23988, {f: 2, c: 24167}, 24166,
   8706     24175, 24297, 24295, 24294, 24296, 24293, 24395, 24508, 24507, 24989,
   8707     25000, 24982, 25029, 25012, 25030, 25025, 25036, 25018, 25023, 25016,
   8708     24972, 25815, 25814, 25808, 25807, 25801, 25789, 25737, 25795, 25819,
   8709     25843, 25817, 25907, 25983, 25980, 26018, 26312, 26302, 26304,
   8710     {f: 2, c: 26314}, 26319, 26301, 26299, 26298, 26316, 26403, 27188, 27238,
   8711     27209, 27239, 27186, 27240, 27198, 27229, 27245, 27254, 27227, 27217,
   8712     27176, 27226, 27195, 27199, 27201, 27242, 27236, 27216, 27215, 27220,
   8713     27247, 27241, 27232, 27196, 27230, 27222, 27221, {f: 2, c: 27213}, 27206,
   8714     27477, 27476, 27478, 27559, {f: 2, c: 27562}, 27592, 27591, 27652, 27651,
   8715     27654, 28589, 28619, 28579, 28615, 28604, 28622, 28616, 28510, 28612,
   8716     28605, 28574, 28618, 28584, 28676, 28581, 28590, 28602, 28588, 28586,
   8717     28623, 28607, 28600, 28578, 28617, 28587, 28621, 28591, 28594, 28592,
   8718     29125, 29122, 29119, 29112, 29142, {f: 2, c: 29120}, 29131, 29140, 29130,
   8719     29127, 29135, 29117, 29144, 29116, 29126, {f: 2, c: 29146},
   8720     {f: 2, c: 29341}, 29545, {f: 2, c: 29542}, 29548, 29541, 29547, 29546,
   8721     29823, 29850, 29856, 29844, 29842, 29845, 29857, 29963, 30080, 30255,
   8722     30253, 30257, 30269, 30259, 30268, 30261, 30258, 30256, 30395, 30438,
   8723     30618, 30621, 30625, 30620, 30619, {f: 2, c: 30626}, 30613, 30617, 30615,
   8724     30941, 30953, 30949, 30954, 30942, 30947, 30939, {f: 2, c: 30945}, 30957,
   8725     {f: 2, c: 30943}, 31140, 31300, 31304, 31303, 31414, 31416, 31413, 31409,
   8726     31415, 31710, 31715, 31719, 31709, 31701, 31717, 31706, 31720, 31737,
   8727     31700, 31722, 31714, 31708, 31723, 31704, 31711, 31954, 31956, 31959,
   8728     {f: 2, c: 31952}, 32274, 32289, 32279, 32268, {f: 2, c: 32287}, 32275,
   8729     32270, 32284, 32277, 32282, 32290, 32267, 32271, 32278, 32269, 32276,
   8730     32293, 32292, 32579, {f: 2, c: 32635}, 32634, 32689, 32751, 32810, 32809,
   8731     32876, 33201, 33190, 33198, 33209, 33205, 33195, 33200, 33196, 33204,
   8732     33202, 33207, 33191, 33266, {f: 3, c: 33365}, 34134, 34117, 34155, 34125,
   8733     34131, 34145, 34136, 34112, 34118, 34148, 34113, 34146, 34116, 34129,
   8734     34119, 34147, 34110, 34139, 34161, 34126, 34158, 34165, 34133, 34151,
   8735     34144, 34188, 34150, 34141, 34132, 34149, 34156, 34403, 34405, 34404,
   8736     34724, 34715, 34703, 34711, 34707, 34706, 34696, 34689, 34710, 34712,
   8737     34681, 34695, 34723, 34693, {f: 2, c: 34704}, 34717, 34692, 34708, 34716,
   8738     34714, 34697, 35102, 35110, 35120, {f: 2, c: 35117}, 35111, 35121, 35106,
   8739     35113, 35107, 35119, 35116, 35103, 35313, 35552, 35554, 35570,
   8740     {f: 2, c: 35572}, 35549, 35604, 35556, 35551, 35568, 35528, 35550, 35553,
   8741     35560, 35583, 35567, 35579, {f: 2, c: 35985}, 35984, 36085, 36078, 36081,
   8742     36080, 36083, 36204, 36206, 36261, 36263, 36403, 36414, 36408, 36416,
   8743     36421, 36406, {f: 2, c: 36412}, 36417, 36400, 36415, 36541, [36662, 60329],
   8744     36654, 36661, 36658, 36665, 36663, 36660, 36982, 36985, 36987, 36998,
   8745     37114, 37171, {f: 2, c: 37173}, 37267, {f: 2, c: 37264}, 37261, 37263,
   8746     37671, 37662, 37640, 37663, 37638, 37647, 37754, 37688, 37692, 37659,
   8747     37667, 37650, 37633, 37702, 37677, 37646, 37645, 37579, 37661, 37626,
   8748     37651, 37625, 37623, 37684, 37634, 37668, 37631, 37673, 37689, 37685,
   8749     37674, 37652, 37644, 37643, 37630, 37641, 37632, 37627, 37654, 38332,
   8750     38349, 38334, {f: 2, c: 38329}, 38326, 38335, 38325, 38333, 38569, 38612,
   8751     38667, 38674, 38672, 38809, 38807, 38804, 38896, 38904, 38965, 38959,
   8752     38962, 39204, 39199, 39207, 39209, 39326, 39406, 39404, 39397, 39396,
   8753     39408, 39395, 39402, 39401, 39399, 39609, 39615, 39604, 39611, 39670,
   8754     39674, 39673, 39671, 39731, 39808, 39813, 39815, 39804, 39806, 39803,
   8755     39810, 39827, 39826, 39824, 39802, 39829, 39805, 39816, 40229, 40215,
   8756     40224, 40222, 40212, 40233, 40221, 40216, 40226, 40208, 40217, 40223,
   8757     40584, {f: 2, c: 40582}, 40622, 40621, {f: 2, c: 40661}, 40698, 40722,
   8758     40765, 20774, 20773, 20770, 20772, 20768, 20777, 21236, 22163,
   8759     {f: 2, c: 22156}, 22150, 22148, 22147, 22142, 22146, 22143, 22145, 22742,
   8760     22740, 22735, 22738, 23341, 23333, 23346, 23331, 23340, 23335, 23334,
   8761     23343, 23342, 23419, {f: 2, c: 23537}, 23991, 24172, 24170, 24510, 25027,
   8762     25013, 25020, 25063, 25056, 25061, 25060, 25064, 25054, 25839, 25833,
   8763     25827, 25835, 25828, 25832, 25985, 25984, 26038, 26074, 26322, 27277,
   8764     27286, 27265, 27301, 27273, 27295, 27291, 27297, 27294, 27271, 27283,
   8765     27278, 27285, 27267, 27304, 27300, 27281, 27263, 27302, 27290, 27269,
   8766     27276, 27282, 27483, 27565, 27657, 28620, 28585, 28660, 28628, 28643,
   8767     28636, 28653, 28647, 28646, 28638, 28658, 28637, 28642, 28648, 29153,
   8768     29169, 29160, 29170, 29156, 29168, 29154, 29555, {f: 2, c: 29550}, 29847,
   8769     29874, 29867, 29840, 29866, 29869, 29873, 29861, 29871, {f: 3, c: 29968},
   8770     29967, 30084, 30275, {f: 2, c: 30280}, 30279, 30372, 30441, 30645, 30635,
   8771     30642, 30647, 30646, 30644, 30641, 30632, 30704, 30963, 30973, 30978,
   8772     {f: 2, c: 30971}, 30975, 30962, 30981, 30969, 30974, 30980, 31147, 31144,
   8773     31324, 31323, 31318, 31320, 31316, 31322, 31422, {f: 2, c: 31424}, 31749,
   8774     31759, 31730, 31744, 31743, 31739, 31758, 31732, 31755, 31731, 31746,
   8775     31753, 31747, 31745, 31736, 31741, [31750, 58176], {f: 2, c: 31728}, 31760,
   8776     31754, 31976, 32301, 32316, 32322, 32307, 38984, 32312, 32298, 32329,
   8777     32320, 32327, 32297, 32332, 32304, 32315, 32310, 32324, 32314, 32581,
   8778     32639, 32638, 32637, 32756, 32754, 32812, 33211, 33220, 33228, 33226,
   8779     33221, 33223, 33212, 33257, 33371, 33370, 33372, 34179, 34176, 34191,
   8780     34215, 34197, 34208, 34187, 34211, 34171, 34212, 34202, 34206, 34167,
   8781     34172, 34185, 34209, 34170, 34168, 34135, 34190, 34198, 34182, 34189,
   8782     34201, 34205, 34177, 34210, 34178, 34184, 34181, 34169, 34166, 34200,
   8783     34192, 34207, 34408, 34750, 34730, 34733, 34757, 34736, 34732, 34745,
   8784     34741, 34748, 34734, 34761, 34755, 34754, 34764, 34743, 34735, 34756,
   8785     34762, 34740, 34742, 34751, 34744, 34749, 34782, 34738, 35125, 35123,
   8786     35132, 35134, 35137, 35154, 35127, 35138, 35245, 35247, 35246,
   8787     {f: 2, c: 35314}, 35614, 35608, 35606, 35601, 35589, 35595, 35618, 35599,
   8788     35602, 35605, 35591, 35597, 35592, 35590, 35612, 35603, 35610, 35919,
   8789     35952, 35954, 35953, 35951, 35989, 35988, 36089, 36207, 36430, 36429,
   8790     36435, 36432, 36428, 36423, 36675, 36672, 36997, 36990, 37176, 37274,
   8791     37282, 37275, 37273, 37279, 37281, 37277, 37280, 37793, 37763, 37807,
   8792     37732, 37718, 37703, 37756, 37720, 37724, 37750, 37705, {f: 2, c: 37712},
   8793     37728, 37741, 37775, 37708, 37738, 37753, 37719, 37717, 37714, 37711,
   8794     37745, 37751, 37755, 37729, 37726, 37731, 37735, 37710, 37721, 38343,
   8795     38336, 38345, 38339, 38341, 38327, 38574, 38576, 38572, 38688, 38687,
   8796     38680, 38685, 38681, 38810, 38817, 38812, 38814, 38813, 38869, 38868,
   8797     38897, 38977, 38980, 38986, 38985, 38981, 38979, 39205, {f: 2, c: 39211},
   8798     39210, 39219, 39218, 39215, 39213, 39217, 39216, 39320, 39331, 39329,
   8799     39426, 39418, 39412, 39415, 39417, 39416, 39414, 39419, {f: 2, c: 39421},
   8800     39420, 39427, 39614, 39678, 39677, 39681, 39676, 39752, 39834, 39848,
   8801     39838, 39835, 39846, 39841, 39845, 39844, 39814, 39842, 39840, 39855,
   8802     40243, 40257, 40295, 40246, {f: 2, c: 40238}, 40241, 40248, 40240, 40261,
   8803     {f: 2, c: 40258}, 40254, 40247, 40256, 40253, 32757, 40237, 40586, 40585,
   8804     40589, 40624, 40648, 40666, 40699, 40703, 40740, 40739, 40738, 40788,
   8805     [12245, 40864], 20785, {f: 2, c: 20781}, 22168, 22172, 22167, 22170, 22173,
   8806     22169, 22896, 23356, {f: 2, c: 23657}, 24000, {f: 2, c: 24173}, 25048,
   8807     25055, {f: 2, c: 25069}, 25073, 25066, 25072, 25067, 25046, 25065, 25855,
   8808     25860, 25853, 25848, 25857, 25859, 25852, 26004, 26075, {f: 2, c: 26330},
   8809     26328, 27333, 27321, 27325, 27361, 27334, 27322, {f: 2, c: 27318}, 27335,
   8810     27316, 27309, 27486, 27593, 27659, 28679, {f: 2, c: 28684}, 28673, 28677,
   8811     28692, 28686, {f: 2, c: 28671}, 28667, 28710, 28668, 28663, 28682,
   8812     [29185, 60224], 29183, 29177, 29187, 29181, 29558, 29880, 29888, 29877,
   8813     29889, 29886, 29878, 29883, 29890, 29972, 29971, 30300, 30308, 30297,
   8814     30288, 30291, 30295, 30298, 30374, 30397, 30444, 30658, 30650, 30988,
   8815     {f: 2, c: 30995}, 30985, 30992, 30994, 30993, 31149, 31148, 31327, 31772,
   8816     31785, 31769, 31776, 31775, 31789, 31773, 31782, 31784, 31778, 31781,
   8817     31792, 32348, 32336, 32342, 32355, 32344, 32354, 32351, 32337, 32352,
   8818     32343, 32339, 32693, 32691, {f: 2, c: 32759}, 32885, {f: 2, c: 33233},
   8819     33232, 33375, 33374, 34228, 34246, 34240, 34243, 34242, 34227, 34229,
   8820     34237, 34247, 34244, 34239, 34251, 34254, 34248, 34245, 34225, 34230,
   8821     34258, 34340, 34232, 34231, 34238, 34409, 34791, 34790, 34786, 34779,
   8822     34795, 34794, 34789, 34783, 34803, 34788, 34772, 34780, 34771, 34797,
   8823     34776, 34787, 34775, 34777, 34817, 34804, 34792, 34781, 35155, 35147,
   8824     35151, 35148, 35142, {f: 2, c: 35152}, 35145, 35626, 35623, 35619, 35635,
   8825     35632, 35637, 35655, 35631, 35644, 35646, 35633, 35621, 35639, 35622,
   8826     35638, 35630, 35620, 35643, 35645, 35642, 35906, 35957, 35993, 35992,
   8827     35991, 36094, 36100, 36098, 36096, 36444, 36450, 36448, 36439, 36438,
   8828     36446, 36453, 36455, 36443, 36442, 36449, 36445, 36457, 36436,
   8829     {f: 3, c: 36678}, 36683, 37160, {f: 2, c: 37178}, 37182, 37288, 37285,
   8830     37287, 37295, 37290, 37813, 37772, 37778, 37815, 37787, 37789, 37769,
   8831     37799, 37774, 37802, 37790, 37798, 37781, 37768, 37785, 37791, 37760,
   8832     37773, 37809, 37777, 37810, 37796, 37800, 37812, 37795, {f: 2, c: 38354},
   8833     38353, 38579, 38615, 38618, 24002, 38623, 38616, 38621, 38691, 38690,
   8834     38693, 38828, 38830, 38824, 38827, 38820, 38826, 38818, 38821, 38871,
   8835     38873, 38870, 38872, 38906, {f: 3, c: 38992}, 39096, 39233, 39228, 39226,
   8836     39439, 39435, 39433, 39437, 39428, 39441, 39434, 39429, 39431, 39430,
   8837     39616, 39644, 39688, {f: 2, c: 39684}, 39721, 39733, 39754, 39756, 39755,
   8838     39879, 39878, 39875, 39871, 39873, 39861, 39864, 39891, 39862, 39876,
   8839     39865, 39869, 40284, 40275, 40271, 40266, 40283, 40267, 40281, 40278,
   8840     40268, 40279, 40274, 40276, 40287, 40280, 40282, 40590, 40588, 40671,
   8841     40705, 40704, [40726, 58693], 40741, 40747, 40746, 40745, 40744, 40780,
   8842     40789, {f: 2, c: 20788}, 21142, 21239, 21428, 22187, 22189,
   8843     {f: 2, c: 22182}, 22186, 22188, 22746, 22749, 22747, 22802,
   8844     {f: 3, c: 23357}, 24003, 24176, 24511, 25083, 25863, 25872, 25869, 25865,
   8845     25868, 25870, 25988, 26078, 26077, 26334, 27367, 27360, 27340, 27345,
   8846     27353, 27339, 27359, 27356, 27344, 27371, 27343, 27341, 27358, 27488,
   8847     27568, 27660, 28697, 28711, 28704, 28694, 28715, {f: 3, c: 28705}, 28713,
   8848     28695, 28708, 28700, 29196, 29194, 29191, 29186, 29189, {f: 2, c: 29349},
   8849     29348, 29347, 29345, 29899, 29893, 29879, 29891, 29974, 30304,
   8850     {f: 2, c: 30665}, 30660, 30705, 31005, 31003, 31009, 31004, 30999, 31006,
   8851     31152, {f: 2, c: 31335}, 31795, 31804, 31801, 31788, 31803, 31980, 31978,
   8852     32374, 32373, 32376, 32368, 32375, 32367, 32378, 32370, 32372, 32360,
   8853     32587, 32586, 32643, 32646, 32695, {f: 2, c: 32765}, 32888, 33239, 33237,
   8854     33291, 33380, 33377, 33379, 34283, 34289, 34285, 34265, 34273, 34280,
   8855     34266, 34263, 34284, 34290, 34296, 34264, 34271, 34275, 34268, 34257,
   8856     34288, 34278, 34287, 34270, 34274, 34816, 34810, 34819, {f: 2, c: 34806},
   8857     34825, 34828, 34827, 34822, 34812, 34824, 34815, 34826, 34818, 35170,
   8858     {f: 2, c: 35162}, 35159, 35169, 35164, 35160, 35165, 35161, 35208, 35255,
   8859     35254, 35318, 35664, 35656, 35658, 35648, 35667, 35670, 35668, 35659,
   8860     35669, 35665, 35650, 35666, 35671, 35907, 35959, 35958, 35994,
   8861     {f: 2, c: 36102}, 36105, 36268, 36266, 36269, 36267, 36461, 36472, 36467,
   8862     36458, 36463, 36475, 36546, 36690, 36689, {f: 2, c: 36687}, 36691, 36788,
   8863     37184, 37183, 37296, 37293, 37854, 37831, 37839, 37826, 37850, 37840,
   8864     37881, 37868, 37836, 37849, 37801, 37862, 37834, 37844, 37870, 37859,
   8865     37845, 37828, 37838, 37824, 37842, 37797, 37863, 38269, {f: 2, c: 38362},
   8866     38625, 38697, {f: 2, c: 38699}, 38696, 38694, 38835, 38839, 38838,
   8867     {f: 3, c: 38877}, 39004, 39001, 39005, 38999, 39103, 39101, 39099, 39102,
   8868     39240, 39239, 39235, {f: 2, c: 39334}, 39450, 39445, 39461, 39453, 39460,
   8869     39451, 39458, 39456, 39463, 39459, 39454, 39452, 39444, 39618, 39691,
   8870     39690, 39694, 39692, 39735, {f: 2, c: 39914}, 39904, 39902, 39908, 39910,
   8871     39906, 39920, 39892, 39895, 39916, 39900, 39897, 39909, 39893, 39905,
   8872     39898, 40311, 40321, 40330, 40324, 40328, 40305, 40320, 40312, 40326,
   8873     {f: 2, c: 40331}, 40317, 40299, {f: 2, c: 40308}, 40304, 40297, 40325,
   8874     40307, 40315, 40322, 40303, 40313, 40319, 40327, 40296, 40596, 40593,
   8875     40640, 40700, 40749, {f: 2, c: 40768}, 40781, {f: 3, c: 40790}, 21303,
   8876     22194, 22197, 22195, 22755, 23365, {f: 2, c: 24006}, {f: 2, c: 24302},
   8877     {f: 2, c: 24512}, 25081, 25879, 25878, 25877, 25875, 26079, 26344,
   8878     {f: 2, c: 26339}, 27379, 27376, 27370, 27368, 27385, 27377,
   8879     {f: 2, c: 27374}, 28732, 28725, 28719, 28727, 28724, 28721, 28738, 28728,
   8880     28735, 28730, 28729, 28714, 28736, 28731, 28723, 28737, {f: 2, c: 29203},
   8881     29352, 29565, 29564, 29882, 30379, 30378, 30398, 30445, 30668,
   8882     {f: 2, c: 30670}, 30669, 30706, 31013, 31011, {f: 2, c: 31015}, 31012,
   8883     31017, 31154, 31342, {f: 2, c: 31340}, 31479, 31817, 31816, 31818, 31815,
   8884     31813, 31982, 32379, 32382, 32385, 32384, 32698, 32767, 32889, 33243,
   8885     33241, {f: 2, c: 33384}, 34338, 34303, 34305, 34302, 34331, 34304, 34294,
   8886     34308, 34313, 34309, 34316, 34301, 34841, {f: 2, c: 34832}, 34839, 34835,
   8887     34838, 35171, 35174, 35257, 35319, 35680, 35690, 35677, 35688, 35683,
   8888     35685, 35687, 35693, 36270, 36486, 36488, 36484, 36697, {f: 2, c: 36694},
   8889     36693, 36696, 36698, 37005, 37187, 37185, 37303, 37301, {f: 2, c: 37298},
   8890     37899, 37907, 37883, 37920, 37903, 37908, 37886, 37909, 37904, 37928,
   8891     37913, 37901, 37877, 37888, 37879, 37895, 37902, 37910, 37906, 37882,
   8892     37897, 37880, 37948, 37898, 37887, 37884, 37900, 37878, 37905, 37894,
   8893     38366, 38368, 38367, {f: 2, c: 38702}, 38841, 38843, {f: 2, c: 38909},
   8894     39008, {f: 2, c: 39010}, 39007, {f: 2, c: 39105}, 39248, 39246, 39257,
   8895     39244, 39243, 39251, 39474, 39476, 39473, 39468, 39466, 39478, 39465,
   8896     39470, 39480, 39469, 39623, 39626, 39622, 39696, 39698, 39697, 39947,
   8897     39944, 39927, 39941, 39954, 39928, 40000, 39943, 39950, 39942, 39959,
   8898     39956, 39945, 40351, 40345, 40356, 40349, 40338, 40344, 40336, 40347,
   8899     40352, 40340, 40348, 40362, 40343, 40353, 40346, 40354, 40360, 40350,
   8900     40355, 40383, 40361, 40342, {f: 2, c: 40358}, 40601, 40603, 40602, 40677,
   8901     40676, 40679, 40678, 40752, 40750, 40795, 40800, 40798, 40797, 40793,
   8902     40849, 20794, 20793, 21144, 21143, 22211, {f: 2, c: 22205}, 23368, 23367,
   8903     24011, 24015, 24305, 25085, 25883, 27394, 27388, 27395, 27384, 27392,
   8904     {f: 2, c: 28739}, 28746, {f: 2, c: 28744}, {f: 2, c: 28741}, 29213, 29210,
   8905     29209, 29566, 29975, 30314, 30672, 31021, 31025, 31023, 31828, 31827,
   8906     31986, 32394, [32391, 60229], 32392, 32395, 32390, 32397, 32589, 32699,
   8907     32816, 33245, 34328, 34346, 34342, 34335, 34339, 34332, 34329, 34343,
   8908     34350, 34337, 34336, 34345, 34334, 34341, 34857, 34845, 34843, 34848,
   8909     34852, 34844, 34859, 34890, 35181, 35177, 35182, 35179, 35322, 35705,
   8910     35704, 35653, {f: 2, c: 35706}, 36112, 36116, 36271, 36494, 36492, 36702,
   8911     36699, 36701, 37190, {f: 2, c: 37188}, 37305, 37951, 37947, 37942, 37929,
   8912     37949, 37936, 37945, 37930, 37943, 37932, 37952, 37937, 38373, 38372,
   8913     38371, 38709, 38714, 38847, 38881, 39012, 39113, 39110, 39104, 39256,
   8914     39254, 39481, 39485, 39494, 39492, 39490, 39489, 39482, 39487, 39629,
   8915     39701, {f: 2, c: 39703}, 39702, 39738, 39762, 39979, 39965, 39964, 39980,
   8916     39971, {f: 2, c: 39976}, 39972, 39969, 40375, 40374, 40380, 40385, 40391,
   8917     40394, 40399, 40382, 40389, 40387, 40379, 40373, 40398, {f: 2, c: 40377},
   8918     40364, 40392, 40369, 40365, 40396, 40371, 40397, 40370, 40570, 40604,
   8919     40683, 40686, 40685, 40731, 40728, 40730, 40753, 40782, 40805, 40804,
   8920     40850, 20153, 22214, 22213, 22219, 22897, {f: 2, c: 23371}, 24021, 24017,
   8921     24306, 25889, 25888, 25894, 25890, 27403, {f: 2, c: 27400}, 27661,
   8922     {f: 3, c: 28757}, 28754, {f: 2, c: 29214}, 29353, 29567, 29912, 29909,
   8923     29913, 29911, 30317, 30381, 31029, 31156, {f: 2, c: 31344}, 31831, 31836,
   8924     31833, 31835, 31834, 31988, 31985, 32401, 32591, 32647, 33246, 33387,
   8925     {f: 2, c: 34356}, 34355, 34348, 34354, 34358, 34860, 34856, 34854, 34858,
   8926     34853, 35185, 35263, 35262, 35323, 35710, 35716, 35714, 35718, 35717,
   8927     35711, 36117, 36501, 36500, 36506, 36498, 36496, {f: 2, c: 36502}, 36704,
   8928     36706, 37191, 37964, 37968, {f: 2, c: 37962}, 37967, 37959, 37957,
   8929     {f: 2, c: 37960}, 37958, 38719, 38883, 39018, 39017, 39115, 39252, 39259,
   8930     39502, {f: 2, c: 39507}, 39500, 39503, 39496, 39498, 39497, 39506, 39504,
   8931     39632, 39705, 39723, 39739, 39766, 39765, 40006, 40008, 39999, 40004,
   8932     39993, 39987, 40001, 39996, 39991, 39988, 39986, 39997, 39990, 40411,
   8933     40402, 40414, 40410, 40395, 40400, 40412, 40401, 40415, 40425, 40409,
   8934     40408, 40406, 40437, 40405, 40413, 40630, 40688, 40757, 40755, 40754,
   8935     40770, 40811, 40853, 40866, 20797, 21145, 22760, 22759, 22898, 23373,
   8936     24024, 34863, 24399, 25089, {f: 2, c: 25091}, 25897, 25893, 26006, 26347,
   8937     {f: 2, c: 27409}, 27407, 27594, 28763, 28762, 29218, 29570, 29569, 29571,
   8938     30320, 30676, 31847, 31846, 32405, 33388, 34362, 34368, 34361, 34364,
   8939     34353, 34363, 34366, 34864, 34866, 34862, 34867, 35190, 35188, 35187,
   8940     35326, 35724, 35726, 35723, 35720, 35909, 36121, 36504, 36708, 36707,
   8941     37308, 37986, 37973, 37981, 37975, 37982, {f: 2, c: 38852}, 38912, 39510,
   8942     39513, {f: 3, c: 39710}, 40018, 40024, 40016, 40010, 40013, 40011, 40021,
   8943     40025, 40012, 40014, 40443, 40439, 40431, 40419, 40427, 40440, 40420,
   8944     40438, 40417, 40430, 40422, 40434, [40432, 60370], 40418, 40428, 40436,
   8945     40435, 40424, 40429, 40642, 40656, {f: 2, c: 40690}, 40710, 40732, 40760,
   8946     40759, 40758, 40771, 40783, 40817, 40816, {f: 2, c: 40814}, 22227, 22221,
   8947     23374, 23661, 25901, {f: 2, c: 26349}, 27411, 28767, 28769, 28765, 28768,
   8948     29219, 29915, 29925, 30677, 31032, 31159, 31158, 31850, 32407, 32649,
   8949     33389, 34371, 34872, 34871, 34869, 34891, {f: 2, c: 35732},
   8950     {f: 3, c: 36510}, 36509, 37310, 37309, 37314, 37995, {f: 2, c: 37992},
   8951     38629, 38726, 38723, 38727, 38855, 38885, 39518, 39637, 39769, 40035,
   8952     40039, 40038, 40034, 40030, 40032, 40450, 40446, 40455, 40451, 40454,
   8953     40453, {f: 2, c: 40448}, 40457, 40447, 40445, 40452, 40608, 40734, 40774,
   8954     {f: 3, c: 40820}, 22228, 25902, 26040, {f: 2, c: 27416}, 27415, 27418,
   8955     28770, 29222, 29354, {f: 2, c: 30680}, 31033, 31849, 31851, 31990, 32410,
   8956     32408, 32411, 32409, {f: 2, c: 33248}, {f: 3, c: 34374}, {f: 2, c: 35193},
   8957     35196, 35195, 35327, {f: 2, c: 35736}, 36517, 36516, 36515, 37998, 37997,
   8958     37999, 38001, 38003, 38729, 39026, 39263, 40040, 40046, 40045, 40459,
   8959     40461, 40464, 40463, 40466, 40465, 40609, 40693, 40713, 40775, 40824,
   8960     40827, 40826, 40825, 22302, 28774, 31855, 34876, 36274, 36518, 37315,
   8961     38004, 38008, 38006, 38005, 39520, [39726, 60830], 40052, 40051, 40049,
   8962     40053, 40468, 40467, 40694, 40714, 40868, 28776, 28773, 31991, 34410,
   8963     34878, 34877, 34879, 35742, 35996, 36521, 36553, 38731, {f: 2, c: 39027},
   8964     39116, 39265, 39339, 39524, {f: 2, c: 39526}, 39716, 40469, 40471, 40776,
   8965     25095, 27422, 29223, 34380, 36520, 38018, {f: 2, c: 38016}, 39529, 39528,
   8966     40473, 34379, 35743, 38019, 40057, 40631, 30325, 39531, 40058, 40477,
   8967     {f: 2, c: 28777}, 29225, 40612, 40830, 40777, 40856, {s: 97}, 65075, 0,
   8968     65076, 65103, [168, 776, 63208], [710, 63209, 65342], [12541, 63210],
   8969     [12542, 63211], [12445, 63212], [12446, 63213], 0, [12293, 63216],
   8970     [12294, 63217], [12295, 63218], [12540, 63219], [63220, 65339],
   8971     [63221, 65341], [10045, 63222], [12353, 63223], [12354, 63224],
   8972     [12355, 63225], [12356, 63226], [12357, 63227], [12358, 63228],
   8973     [12359, 63229], [12360, 63230], [12361, 63231], [12362, 63232],
   8974     [12363, 63233], [12364, 63234], [12365, 63235], [12366, 63236],
   8975     [12367, 63237], [12368, 63238], [12369, 63239], [12370, 63240],
   8976     [12371, 63241], [12372, 63242], [12373, 63243], [12374, 63244],
   8977     [12375, 63245], [12376, 63246], [12377, 63247], [12378, 63248],
   8978     [12379, 63249], [12380, 63250], [12381, 63251], [12382, 63252],
   8979     [12383, 63253], [12384, 63254], [12385, 63255], [12386, 63256],
   8980     [12387, 63257], [12388, 63258], [12389, 63259], [12390, 63260],
   8981     [12391, 63261], [12392, 63262], [12393, 63263], [12394, 63264],
   8982     [12395, 63265], [12396, 63266], [12397, 63267], [12398, 63268],
   8983     [12399, 63269], [12400, 63270], [12401, 63271], [12402, 63272],
   8984     [12403, 63273], [12404, 63274], [12405, 63275], [12406, 63276],
   8985     [12407, 63277], [12408, 63278], [12409, 63279], [12410, 63280],
   8986     [12411, 63281], [12412, 63282], [12413, 63283], [12414, 63284],
   8987     [12415, 63285], [12416, 63286], [12417, 63287], [12418, 63288],
   8988     [12419, 63289], [12420, 63290], [12421, 63291], [12422, 63292],
   8989     [12423, 63293], [12424, 63294], [12425, 63295], [12426, 63296],
   8990     [12427, 63297], [12428, 63298], [12429, 63299], [12430, 63300],
   8991     [12431, 63301], [12432, 63302], [12433, 63303], [12434, 63304],
   8992     [12435, 63305], [12449, 63306], [12450, 63307], [12451, 63308],
   8993     [12452, 63309], [12453, 63310], [12454, 63311], [12455, 63312],
   8994     [12456, 63313], [12457, 63314], [12458, 63315], [12459, 63316],
   8995     [12460, 63317], [12461, 63318], [12462, 63319], [12463, 63320],
   8996     [12464, 63321], [12465, 63322], [12466, 63323], [12467, 63324],
   8997     [12468, 63325], [12469, 63326], [12470, 63327], [12471, 63328],
   8998     [12472, 63329], [12473, 63330], [12474, 63331], [12475, 63332],
   8999     [12476, 63333], [12477, 63334], [12478, 63335], [12479, 63336],
   9000     [12480, 63337], [12481, 63338], [12482, 63339], [12483, 63340],
   9001     [12484, 63341], [12485, 63342], [12486, 63343], [12487, 63344],
   9002     [12488, 63345], [12489, 63346], [12490, 63347], [12491, 63348],
   9003     [12492, 63349], [12493, 63350], [12494, 63351], [12495, 63352],
   9004     [12496, 63353], [12497, 63354], [12498, 63355], [12499, 63356],
   9005     [12500, 63357], [12501, 63358], [12502, 63359], [12503, 63360],
   9006     [12504, 63361], [12505, 63362], [12506, 63363], [12507, 63364],
   9007     [12508, 63365], [12509, 63366], [12510, 63367], [12511, 63368],
   9008     [12512, 63369], [12513, 63370], [12514, 63371], [12515, 63372],
   9009     [12516, 63373], [12517, 63374], [12518, 63375], [12519, 63376],
   9010     [12520, 63377], [12521, 63378], [12522, 63379], [12523, 63380],
   9011     [12524, 63381], [12525, 63382], [12526, 63383], [12527, 63384],
   9012     [12528, 63385], [12529, 63386], [12530, 63387], [12531, 63388],
   9013     [12532, 63389], [12533, 63390], [12534, 63391], [1040, 63392],
   9014     [1041, 63393], [1042, 63394], [1043, 63395], [1044, 63396], [1045, 63397],
   9015     [1025, 63398], [1046, 63399], [1047, 63400], [1048, 63401], [1049, 63402],
   9016     [1050, 63403], [1051, 63404], [1052, 63405], [1053, 63406], [1054, 63407],
   9017     [1055, 63408], [1056, 63409], [1057, 63410], [1058, 63411], [1059, 63412],
   9018     [1060, 63413], [1061, 63414], [1062, 63415], [1063, 63416], [1064, 63417],
   9019     [1065, 63418], [1066, 63419], [1067, 63420], [1068, 63421], [1069, 63422],
   9020     [1070, 63423], [1071, 63424], [1072, 63425], [1073, 63426], [1074, 63427],
   9021     [1075, 63428], [1076, 63429], [1077, 63430], [1105, 63431], [1078, 63432],
   9022     [1079, 63433], [1080, 63434], [1081, 63435], [1082, 63436], [1083, 63437],
   9023     [1084, 63438], [1085, 63439], [1086, 63440], [1087, 63441], [1088, 63442],
   9024     [1089, 63443], [1090, 63444], [1091, 63445], [1092, 63446], [1093, 63447],
   9025     [1094, 63448], [1095, 63449], [1096, 63450], [1097, 63451], [1098, 63452],
   9026     [1099, 63453], [1100, 63454], [1101, 63455], [1102, 63456], [1103, 63457],
   9027     [8679, 63458], [8632, 63459], [8633, 63460], [20033, 63461],
   9028     [63462, 131276], [20058, 63463], [63464, 131210], [20994, 63465],
   9029     [17553, 63466], 63467, [20872, 63468], [13853, 63469], [63470, 161287],
   9030     {s: 40}, [172, 63511, 65506], [63512, 65508], [63513, 65287],
   9031     [63514, 65282], [12849, 63515], [8470, 63516], [8481, 63517], 30849,
   9032     [37561, 58501], 35023, 22715, 24658, 31911, 23290, 9556, 9574, 9559, 9568,
   9033     9580, 9571, 9562, 9577, 9565, 9554, 9572, 9557, {s: 3}, 9560, 9575, 9563,
   9034     9555, 9573, 9558, 9567, 9579, 9570, 9561, 9576, 9564, 9553, {s: 5}, 9619,
   9035     {s: 26}, [58129, 147159], [22462, 58130], [58131, 159443], [28990, 58132],
   9036     [58133, 153568], [27042, 58135], [58136, 166889], [23412, 58137],
   9037     [31305, 58138], [58139, 153825], [58140, 169177], [31333, 58141],
   9038     [31357, 58142], [58143, 154028], [31419, 58144], [31408, 58145],
   9039     [31426, 58146], [31427, 58147], [29137, 58148], [58149, 156813],
   9040     [16842, 58150], [31450, 58151], [31453, 58152], [31466, 58153],
   9041     [16879, 58154], [21682, 58155], [58156, 154625], [31499, 58157],
   9042     [31573, 58158], [31529, 58159], [58160, 152334], [58161, 154878],
   9043     [31650, 58162], [31599, 58163], [33692, 58164], [58165, 154548],
   9044     [58166, 158847], [31696, 58167], [33825, 58168], [31634, 58169], 0,
   9045     [58171, 154912], 0, [33938, 58174], [31738, 58175], 0, [31797, 58177],
   9046     [58178, 154817], [31812, 58179], [31875, 58180], [58181, 149634],
   9047     [31910, 58182], [58184, 148856], [31945, 58185], [31943, 58186],
   9048     [31974, 58187], 0, [31987, 58189], [31989, 58190], [32359, 58192],
   9049     [17693, 58193], [58194, 159300], [32093, 58195], [58196, 159446],
   9050     [32137, 58198], [32171, 58199], [28981, 58200], [32179, 58201], 32214,
   9051     [58203, 147543], [58204, 155689], [32228, 58205], [15635, 58206],
   9052     [32245, 58207], [58208, 137209], [32229, 58209], [58210, 164717], 0,
   9053     [58212, 155937], [58213, 155994], [32366, 58214], 0, [17195, 58216],
   9054     [37996, 58217], [32295, 58218], [32576, 58219], [32577, 58220],
   9055     [32583, 58221], [31030, 58222], [58223, 156368], [39393, 58224],
   9056     [32663, 58225], [58226, 156497], [32675, 58227], [58228, 136801],
   9057     [58229, 131176], [17756, 58230], [58231, 145254], [58233, 164666],
   9058     [32762, 58234], [58235, 156809], 0, [32776, 58237], [32797, 58238], 0,
   9059     [32815, 58240], [58241, 172167], [58242, 158915], [32827, 58243],
   9060     [32828, 58244], [32865, 58245], [58246, 141076], [18825, 58247],
   9061     [58248, 157222], [58249, 146915], [58250, 157416], [26405, 58251],
   9062     [32935, 58252], [58253, 166472], [33031, 58254], [33050, 58255],
   9063     [22704, 58256], [58257, 141046], [27775, 58258], [58259, 156824],
   9064     [25831, 58261], [58262, 136330], [33304, 58263], [58264, 137310],
   9065     [27219, 58265], [58266, 150117], [58267, 150165], [17530, 58268],
   9066     [33321, 58269], [58271, 158290], [58272, 146814], [20473, 58273],
   9067     [58274, 136445], [34018, 58275], [33634, 58276], 0, [58278, 149927],
   9068     [58279, 144688], [58280, 137075], [58281, 146936], [33450, 58282],
   9069     [26907, 58283], [58284, 194964], [16859, 58285], [34123, 58286],
   9070     [33488, 58287], [33562, 58288], [58289, 134678], [58290, 137140],
   9071     [14017, 58291], [58292, 143741], [58293, 144730], [33403, 58294],
   9072     [33506, 58295], [33560, 58296], [58297, 147083], [58298, 159139],
   9073     [58299, 158469], [58300, 158615], [58301, 144846], [15807, 58302],
   9074     [33565, 58303], [21996, 58304], [33669, 58305], [17675, 58306],
   9075     [58307, 159141], [33708, 58308], 0, [33747, 58310], [58312, 159444],
   9076     [27223, 58313], [34138, 58314], [13462, 58315], [58316, 159298],
   9077     [33880, 58318], [58319, 154596], [33905, 58320], [15827, 58321],
   9078     [17636, 58322], [27303, 58323], [33866, 58324], [31064, 58326], 0,
   9079     [58328, 158614], [58329, 159351], [58330, 159299], [34014, 58331], 0,
   9080     [33681, 58333], [17568, 58334], [33939, 58335], [34020, 58336],
   9081     [58337, 154769], [16960, 58338], [58339, 154816], [17731, 58340],
   9082     [34100, 58341], [23282, 58342], 0, [17703, 58344], [34163, 58345],
   9083     [17686, 58346], [26559, 58347], [34326, 58348], [58349, 165413],
   9084     [58350, 165435], [34241, 58351], [58352, 159880], [34306, 58353],
   9085     [58354, 136578], [58355, 159949], [58356, 194994], [17770, 58357],
   9086     [34344, 58358], [13896, 58359], [58360, 137378], [21495, 58361],
   9087     [58362, 160666], [34430, 58363], 0, [58365, 172280], [34798, 58366],
   9088     [58367, 142375], [34737, 58368], [34778, 58369], [34831, 58370, 60990],
   9089     [22113, 58371], [34412, 58372], [26710, 58373], [17935, 58374],
   9090     [34885, 58375], [34886, 58376], [58377, 161248], [58378, 146873],
   9091     [58379, 161252], [34910, 58380], [34972, 58381], [18011, 58382],
   9092     [34996, 58383], [34997, 58384], [35013, 58386], [58388, 161551],
   9093     [35207, 58389], {s: 3}, [35239, 58393], [35260, 58394], [58395, 166437],
   9094     [35303, 58396], [58397, 162084], [58398, 162493], [35484, 58399],
   9095     [30611, 58400], [37374, 58401], [35472, 58402], [58403, 162393],
   9096     [31465, 58404], [58405, 162618], [18195, 58407], [58408, 162616],
   9097     [29052, 58409], [35596, 58410], [35615, 58411], [58412, 152624],
   9098     [58413, 152933], [35647, 58414], 0, [35661, 58416], [35497, 58417],
   9099     [58418, 150138], [35728, 58419], [35739, 58420], [35503, 58421],
   9100     [58422, 136927], [17941, 58423], [34895, 58424], [35995, 58425],
   9101     [58426, 163156], [58427, 163215], [58428, 195028], [14117, 58429],
   9102     [58430, 163155], [36054, 58431], [58432, 163224], [58433, 163261],
   9103     [36114, 58434], [36099, 58435], [58436, 137488], [36059, 58437],
   9104     [28764, 58438], [36113, 58439], [16080, 58441], 0, [36265, 58443],
   9105     [58444, 163842], [58445, 135188], [58446, 149898], [15228, 58447],
   9106     [58448, 164284], [58449, 160012], [31463, 58450], [36525, 58451],
   9107     [36534, 58452], [36547, 58453], [37588, 58454], [36633, 58455],
   9108     [36653, 58456], [58457, 164709], [58458, 164882], [36773, 58459],
   9109     [37635, 58460], [58461, 172703], [58462, 133712], [36787, 58463], 0,
   9110     [58465, 166366], [58466, 165181], [58467, 146875], [24312, 58468],
   9111     [58469, 143970], [36857, 58470], 0, [58474, 140069], [14720, 58475],
   9112     [58476, 159447], [36919, 58477], [58478, 165180], [58479, 162494],
   9113     [36961, 58480], [58481, 165228], [58482, 165387], [37032, 58483],
   9114     [58484, 165651], [37060, 58485], [58486, 165606], [37038, 58487], 0,
   9115     [37223, 58489], [37289, 58491], [37316, 58492], [31916, 58493],
   9116     [58494, 166195], [58495, 138889], [37390, 58496], [27807, 58497],
   9117     [37441, 58498], [37474, 58499], [58500, 153017], [58502, 166598],
   9118     [58503, 146587], [58504, 166668], [58505, 153051], [58506, 134449],
   9119     [37676, 58507], [37739, 58508], [58509, 166625], [58510, 166891],
   9120     [23235, 58512], [58513, 166626], [58514, 166629], [18789, 58515],
   9121     [37444, 58516], [58517, 166892], [58518, 166969], [58519, 166911],
   9122     [37747, 58520], [37979, 58521], [36540, 58522], [38277, 58523],
   9123     [38310, 58524], [37926, 58525], [38304, 58526], [28662, 58527],
   9124     [17081, 58528], [58530, 165592], [58531, 135804], [58532, 146990],
   9125     [18911, 58533], [27676, 58534], [38523, 58535], [38550, 58536],
   9126     [16748, 58537], [38563, 58538], [58539, 159445], [25050, 58540], 58541,
   9127     [30965, 58542], [58543, 166624], [38589, 58544], [21452, 58545],
   9128     [18849, 58546], [58547, 158904], [58548, 131700], [58549, 156688],
   9129     [58550, 168111], [58551, 168165], [58552, 150225], [58553, 137493],
   9130     [58554, 144138], [38705, 58555], [34370, 58556], [38710, 58557],
   9131     [18959, 58558], [17725, 58559], [17797, 58560], [58561, 150249],
   9132     [28789, 58562], [23361, 58563], [38683, 58564], 0, [58566, 168405],
   9133     [38743, 58567], [23370, 58568], [58569, 168427], [38751, 58570],
   9134     [37925, 58571], [20688, 58572], [58573, 143543], [58574, 143548],
   9135     [38793, 58575], [38815, 58576], [38833, 58577], [38846, 58578],
   9136     [38848, 58579], [38866, 58580], [38880, 58581], [58582, 152684],
   9137     [38894, 58583], [29724, 58584], [58585, 169011], 0, [38901, 58587],
   9138     [58588, 168989], [58589, 162170], [19153, 58590], [38964, 58591],
   9139     [38963, 58592], [38987, 58593], [39014, 58594], [15118, 58595],
   9140     [58596, 160117], [15697, 58597], [58598, 132656], [58599, 147804],
   9141     [58600, 153350], [39114, 58601], [39095, 58602], [39112, 58603],
   9142     [39111, 58604], [19199, 58605], [58606, 159015], [58607, 136915],
   9143     [21936, 58608], [39137, 58609], [39142, 58610], [39148, 58611],
   9144     [37752, 58612], [39225, 58613], [58614, 150057], [19314, 58615],
   9145     [58616, 170071], [58617, 170245], [39413, 58618], [39436, 58619],
   9146     [39483, 58620], [39440, 58621], [39512, 58622], [58623, 153381],
   9147     [14020, 58624], [58625, 168113], [58626, 170965], [39648, 58627],
   9148     [39650, 58628], [58629, 170757], [39668, 58630], [19470, 58631],
   9149     [39700, 58632], [39725, 58633], [58634, 165376], [20532, 58635],
   9150     [39732, 58636], [14531, 58638], [58639, 143485], [39760, 58640],
   9151     [39744, 58641], [58642, 171326], [23109, 58643], [58644, 137315],
   9152     [39822, 58645], [39938, 58647], [39935, 58648], [39948, 58649],
   9153     [58650, 171624], [40404, 58651], [58652, 171959], [58653, 172434],
   9154     [58654, 172459], [58655, 172257], [58656, 172323], [58657, 172511],
   9155     [40318, 58658], [40323, 58659], [58660, 172340], [40462, 58661],
   9156     [40388, 58663], [58665, 172435], [58666, 172576], [58667, 137531],
   9157     [58668, 172595], [40249, 58669], [58670, 172217], [58671, 172724],
   9158     [40592, 58672], [40597, 58673], [40606, 58674], [40610, 58675],
   9159     [19764, 58676], [40618, 58677], [40623, 58678], [58679, 148324],
   9160     [40641, 58680], [15200, 58681], [14821, 58682], [15645, 58683],
   9161     [20274, 58684], [14270, 58685], [58686, 166955], [40706, 58687],
   9162     [40712, 58688], [19350, 58689], [37924, 58690], [58691, 159138],
   9163     [40727, 58692, 60836], 0, [40761, 58694], [22175, 58695], [22154, 58696],
   9164     [40773, 58697], [39352, 58698], [58699, 168075], [38898, 58700],
   9165     [33919, 58701], 0, [40809, 58703], [31452, 58704], [40846, 58705],
   9166     [29206, 58706], [19390, 58707], [58708, 149877], [58709, 149947],
   9167     [29047, 58710], [58711, 150008], [58712, 148296], [58713, 150097],
   9168     [29598, 58714], [58715, 166874], [58716, 137466], [31135, 58717],
   9169     [58718, 166270], [58719, 167478], [37737, 58720], [37875, 58721],
   9170     [58722, 166468], [37612, 58723], [37761, 58724], [37835, 58725],
   9171     [58726, 166252], [58727, 148665], [29207, 58728], [16107, 58729],
   9172     [30578, 58730], [31299, 58731], [28880, 58732], [58733, 148595],
   9173     [58734, 148472], [29054, 58735], [58736, 137199], [28835, 58737],
   9174     [58738, 137406], [58739, 144793], [16071, 58740], [58741, 137349],
   9175     [58742, 152623], [58743, 137208], [14114, 58744], [58745, 136955],
   9176     [58746, 137273], [14049, 58747], [58748, 137076], [58749, 137425],
   9177     [58750, 155467], [14115, 58751], [58752, 136896], [22363, 58753],
   9178     [58754, 150053], [58755, 136190], [58756, 135848], [58757, 136134],
   9179     [58758, 136374], [34051, 58759, 58761], [58760, 145062], 0, [33877, 58762],
   9180     [58763, 149908], [58764, 160101], [58765, 146993], [58766, 152924],
   9181     [58767, 147195], [58768, 159826], [17652, 58769], [58770, 145134],
   9182     [58771, 170397], [58772, 159526], [26617, 58773], [14131, 58774],
   9183     [15381, 58775], [15847, 58776], [22636, 58777], [58778, 137506],
   9184     [26640, 58779], [16471, 58780], [58781, 145215], [58782, 147681],
   9185     [58783, 147595], [58784, 147727], [58785, 158753], [21707, 58786],
   9186     [22174, 58787], [58788, 157361], [22162, 58789], [58790, 135135],
   9187     [58791, 134056], [58792, 134669], 0, [58794, 166675], [37788, 58795],
   9188     [20216, 58796], [20779, 58797], [14361, 58798], [58799, 148534],
   9189     [20156, 58800], [58801, 132197], 0, [20299, 58803], [20362, 58804],
   9190     [58805, 153169], [23144, 58806], [58807, 131499], [58808, 132043],
   9191     [14745, 58809], [58810, 131850], [58811, 132116], [13365, 58812],
   9192     [20265, 58813], [58814, 131776], [58815, 167603], [58816, 131701],
   9193     [35546, 58817], [58818, 131596], [20120, 58819], [20685, 58820],
   9194     [20749, 58821], [20386, 58822], [20227, 58823], [58824, 150030],
   9195     [58825, 147082], [20290, 58826], [20526, 58827], [20588, 58828],
   9196     [20609, 58829], [20428, 58830], [20453, 58831], [20568, 58832],
   9197     [20732, 58833], [28278, 58838], [58839, 144789], [58840, 147001],
   9198     [58841, 147135], [28018, 58842], [58843, 137348], [58844, 147081],
   9199     [20904, 58845], [20931, 58846], [58847, 132576], [17629, 58848],
   9200     [58849, 132259], [58850, 132242], [58851, 132241], [36218, 58852],
   9201     [58853, 166556], [58854, 132878], [21081, 58855], [21156, 58856],
   9202     [58857, 133235], [21217, 58858], 0, [18042, 58860], [29068, 58861],
   9203     [58862, 148364], [58863, 134176], [58864, 149932], [58865, 135396],
   9204     [27089, 58866], [58867, 134685], 0, [16094, 58869], [29849, 58870],
   9205     [29716, 58871], [29782, 58872], [29592, 58873], [19342, 58874],
   9206     [58875, 150204], [58876, 147597], [21456, 58877], [13700, 58878],
   9207     [29199, 58879], [58880, 147657], [21940, 58881], [58882, 131909],
   9208     [21709, 58883], [58884, 134086], [22301, 58885], [37469, 58886],
   9209     [38644, 58887], [22493, 58889], [22413, 58890], [22399, 58891],
   9210     [13886, 58892], [22731, 58893], [23193, 58894], [58895, 166470],
   9211     [58896, 136954], [58897, 137071], [58898, 136976], [23084, 58899],
   9212     [22968, 58900], [23166, 58902], [23247, 58903], [23058, 58904],
   9213     [58905, 153926], [58906, 137715], [58907, 137313], [58908, 148117],
   9214     [14069, 58909], [27909, 58910], [29763, 58911], [23073, 58912],
   9215     [58913, 155267], [23169, 58914], [58915, 166871], [58916, 132115],
   9216     [37856, 58917], [29836, 58918], [58919, 135939], [28933, 58920],
   9217     [18802, 58921], [37896, 58922], [58923, 166395], [37821, 58924],
   9218     [14240, 58925], [23582, 58926], [23710, 58927], [24158, 58928],
   9219     [24136, 58929], [58930, 137622], [58931, 137596], [58932, 146158],
   9220     [24269, 58933], [23375, 58934], [58935, 137475], [58936, 137476],
   9221     [14081, 58937], [58938, 137376], [14045, 58939], [58940, 136958],
   9222     [14035, 58941], [33066, 58942], [58943, 166471], [58944, 138682],
   9223     [58945, 144498], [58946, 166312], [24332, 58947, 60916], [24334, 58948],
   9224     [58949, 137511], [58950, 137131], [23147, 58951], [58952, 137019],
   9225     [23364, 58953], [58955, 161277], [34912, 58956], [24702, 58957],
   9226     [58958, 141408], [58959, 140843], [24539, 58960], [16056, 58961],
   9227     [58962, 140719], [58963, 140734], [58964, 168072], [58965, 159603],
   9228     [25024, 58966], [58967, 131134], [58968, 131142], [58969, 140827],
   9229     [24985, 58970], [24984, 58971], [24693, 58972], [58973, 142491],
   9230     [58974, 142599], [58975, 149204], [58976, 168269], [25713, 58977],
   9231     [58978, 149093], [58979, 142186], [14889, 58980], [58981, 142114],
   9232     [58982, 144464], [58983, 170218], [58984, 142968], [25399, 58985],
   9233     [25782, 58987], [25393, 58988], [25553, 58989], [58990, 149987],
   9234     [58991, 142695], [25252, 58992], [58993, 142497], [25659, 58994],
   9235     [25963, 58995], [26994, 58996], [15348, 58997], [58998, 143502],
   9236     [58999, 144045], [59000, 149897], [59001, 144043], [21773, 59002],
   9237     [59003, 144096], [59004, 137433], [59005, 169023], [26318, 59006],
   9238     [59007, 144009], [59008, 143795], [15072, 59009], [59011, 152964],
   9239     [59012, 166690], [59013, 152975], [59014, 136956], [59015, 152923],
   9240     [59016, 152613], [30958, 59017], [59018, 143619], [59019, 137258],
   9241     [59020, 143924], [13412, 59021], [59022, 143887], [59023, 143746],
   9242     [59024, 148169], [26254, 59025], [59026, 159012], [26219, 59027],
   9243     [19347, 59028], [26160, 59029], [59030, 161904], [59031, 138731],
   9244     [26211, 59032], [59033, 144082], [59034, 144097], [26142, 59035],
   9245     [59036, 153714], [14545, 59037], [59038, 145466], [59039, 145340],
   9246     [15257, 59040], [59041, 145314], [59042, 144382], [29904, 59043],
   9247     [15254, 59044], [59046, 149034], [26806, 59047], 0, [15300, 59049],
   9248     [27326, 59050], [59052, 145365], [59053, 148615], [27187, 59054],
   9249     [27218, 59055], [27337, 59056], [27397, 59057], [59058, 137490],
   9250     [25873, 59059], [26776, 59060], [27212, 59061], [15319, 59062],
   9251     [27258, 59063], [27479, 59064], [59065, 147392], [59066, 146586],
   9252     [37792, 59067], [37618, 59068], [59069, 166890], [59070, 166603],
   9253     [37513, 59071], [59072, 163870], [59073, 166364], [37991, 59074],
   9254     [28069, 59075], [28427, 59076], 0, [59079, 147327], [15759, 59080],
   9255     [28164, 59081], [59082, 147516], [23101, 59083], [28170, 59084],
   9256     [22599, 59085], [27940, 59086], [30786, 59087], [28987, 59088],
   9257     [59089, 148250], [59090, 148086], [28913, 59091], [29264, 59092, 61085],
   9258     [29319, 59093], [29332, 59094], [59095, 149391], [59096, 149285],
   9259     [20857, 59097], [59098, 150180], [59099, 132587], [29818, 59100],
   9260     [59101, 147192], [59102, 144991], [59103, 150090], [59104, 149783],
   9261     [59105, 155617], [16134, 59106], [16049, 59107], [59108, 150239],
   9262     [59109, 166947], [59110, 147253], [24743, 59111], [16115, 59112],
   9263     [29900, 59113], [29756, 59114], [37767, 59115], [29751, 59116],
   9264     [17567, 59117], [59118, 159210], [17745, 59119], [30083, 59120],
   9265     [16227, 59121], [59122, 150745], [59123, 150790], [16216, 59124],
   9266     [30037, 59125], [30323, 59126], [59127, 173510], 0, [29800, 59129, 61070],
   9267     [59130, 166604], [59131, 149931], [59132, 149902], [15099, 59133],
   9268     [15821, 59134], [59135, 150094], [16127, 59136], [59137, 149957],
   9269     [59138, 149747], [37370, 59139], [22322, 59140], [37698, 59141],
   9270     [59142, 166627], [59143, 137316], [20703, 59144], [59145, 152097],
   9271     [59146, 152039], [30584, 59147], [59148, 143922], [30478, 59149],
   9272     [30479, 59150], [30587, 59151], [59152, 149143], [59153, 145281],
   9273     [14942, 59154], [59155, 149744], [29752, 59156], [29851, 59157],
   9274     [16063, 59158], [59159, 150202], [59160, 150215], [16584, 59161],
   9275     [59162, 150166], [59163, 156078], [37639, 59164], [59165, 152961],
   9276     [30750, 59166], [30861, 59167], [30856, 59168], [30930, 59169],
   9277     [29648, 59170], [31065, 59171], [59172, 161601], [59173, 153315],
   9278     [16654, 59174], 0, 0, [31141, 59177], [27181, 59178], [59179, 147194],
   9279     [31290, 59180], [31220, 59181], [16750, 59182], [59183, 136934],
   9280     [16690, 59184], [37429, 59185], [31217, 59186], [59187, 134476],
   9281     [59188, 149900], [59189, 131737], [59190, 146874], [59191, 137070],
   9282     [13719, 59192], [21867, 59193], [13680, 59194], [13994, 59195],
   9283     [59196, 131540], [59197, 134157], [31458, 59198], [23129, 59199],
   9284     [59200, 141045], [59201, 154287], [59202, 154268], [23053, 59203],
   9285     [59204, 131675], [30960, 59205], [23082, 59206], [59207, 154566],
   9286     [31486, 59208], [16889, 59209], [31837, 59210], [31853, 59211],
   9287     [16913, 59212], [59213, 154547], [59214, 155324], [59215, 155302],
   9288     [31949, 59216], [59217, 150009], [59218, 137136], [31886, 59219],
   9289     [31868, 59220], [31918, 59221], [27314, 59222], [32220, 59223],
   9290     [32263, 59224], [32211, 59225], [32590, 59226], [59227, 156257],
   9291     [59228, 155996], [59229, 162632], [32151, 59230], [59231, 155266],
   9292     [17002, 59232], [59233, 158581], [59234, 133398], [26582, 59235],
   9293     [59236, 131150], [59237, 144847], [22468, 59238], [59239, 156690],
   9294     [59240, 156664], [32733, 59242], [31527, 59243], [59244, 133164],
   9295     [59245, 154345], [59246, 154947], [31500, 59247], [59248, 155150],
   9296     [39398, 59249], [34373, 59250], [39523, 59251], [27164, 59252],
   9297     [59253, 144447], [59255, 150007], [59256, 157101], [39455, 59257],
   9298     [59258, 157088], 0, [59260, 160039], [59261, 158929], [17642, 59262],
   9299     [33079, 59263], [17410, 59264], [32966, 59265], [33033, 59266],
   9300     [33090, 59267], [59268, 157620], [39107, 59269], [59270, 158274],
   9301     [33378, 59271], [33381, 59272], [59273, 158289], [33875, 59274],
   9302     [59275, 159143], [34320, 59276], [59277, 160283], [23174, 59278],
   9303     [16767, 59279], [59280, 137280], [23339, 59281], [59282, 137377],
   9304     [23268, 59283], [59284, 137432], [34464, 59285], [59286, 195004],
   9305     [59287, 146831], [34861, 59288], [59289, 160802], [23042, 59290],
   9306     [34926, 59291], [20293, 59292], [34951, 59293], [35007, 59294],
   9307     [35046, 59295], [35173, 59296], [35149, 59297], [59298, 153219],
   9308     [35156, 59299], [59300, 161669], [59301, 161668], [59302, 166901],
   9309     [59303, 166873], [59304, 166812], [59305, 166393], [16045, 59306],
   9310     [33955, 59307], [18165, 59308], [18127, 59309], [14322, 59310],
   9311     [35389, 59311], [35356, 59312], [59313, 169032], [24397, 59314],
   9312     [37419, 59315], [59316, 148100], [26068, 59317], [28969, 59318],
   9313     [28868, 59319], [59320, 137285], [40301, 59321], [35999, 59322],
   9314     [36073, 59323], [59324, 163292], [22938, 59325], [30659, 59326],
   9315     [23024, 59327], [14036, 59329], [36394, 59330], [36519, 59331],
   9316     [59332, 150537], [36656, 59333], [36682, 59334], [17140, 59335],
   9317     [27736, 59336], [28603, 59337], [59338, 140065], [18587, 59339],
   9318     [28537, 59340], [28299, 59341], [59342, 137178], [39913, 59343],
   9319     [14005, 59344], [59345, 149807], [37051, 59346], 0, [21873, 59348],
   9320     [18694, 59349], [37307, 59350], [37892, 59351], [59352, 166475],
   9321     [16482, 59353], [59354, 166652], [37927, 59355], [59356, 166941],
   9322     [59357, 166971], [34021, 59358], [35371, 59359], [38297, 59360],
   9323     [38311, 59361], [38295, 59362], [38294, 59363], [59364, 167220],
   9324     [29765, 59365], [16066, 59366], [59367, 149759], [59368, 150082],
   9325     [59369, 148458], [16103, 59370], [59371, 143909], [38543, 59372],
   9326     [59373, 167655], [59374, 167526], [59375, 167525], [16076, 59376],
   9327     [59377, 149997], [59378, 150136], [59379, 147438], [29714, 59380],
   9328     [29803, 59381], [16124, 59382], [38721, 59383], [59384, 168112],
   9329     [26695, 59385], [18973, 59386], [59387, 168083], [59388, 153567], 0,
   9330     [37736, 59390], [59391, 166281], [59392, 166950], [59393, 166703],
   9331     [59394, 156606], [37562, 59395], [23313, 59396], [35689, 59397],
   9332     [18748, 59398], [29689, 59399], [59400, 147995], [38811, 59401], 0,
   9333     [39224, 59403], [59404, 134950], [24001, 59405], [59406, 166853],
   9334     [59407, 150194], [38943, 59408], [59409, 169178], [37622, 59410],
   9335     [59411, 169431], [37349, 59412], [17600, 59413], [59414, 166736],
   9336     [59415, 150119], [59416, 166756], [39132, 59417], [59418, 166469],
   9337     [16128, 59419], [37418, 59420], [18725, 59421], [33812, 59422],
   9338     [39227, 59423], [39245, 59424], [59425, 162566], [15869, 59426], 0,
   9339     [19311, 59428], [39338, 59429], [39516, 59430], [59431, 166757],
   9340     [59432, 153800], [27279, 59433], [39457, 59434], [23294, 59435],
   9341     [39471, 59436], [59437, 170225], [19344, 59438], [59439, 170312],
   9342     [39356, 59440], [19389, 59441], [19351, 59442], [37757, 59443],
   9343     [22642, 59444], [59445, 135938], [22562, 59446], [59447, 149944],
   9344     [59448, 136424], [30788, 59449], [59450, 141087], [59451, 146872],
   9345     [26821, 59452], [15741, 59453], [37976, 59454], [14631, 59455],
   9346     [24912, 59456], [59457, 141185], [59458, 141675], [24839, 59459],
   9347     [40015, 59460], [40019, 59461], [40059, 59462], [39989, 59463],
   9348     [39952, 59464], [39807, 59465], [39887, 59466], [59467, 171565],
   9349     [39839, 59468], [59469, 172533], [59470, 172286], [40225, 59471],
   9350     [19630, 59472], [59473, 147716], [40472, 59474], [19632, 59475],
   9351     [40204, 59476], [59477, 172468], [59478, 172269], [59479, 172275],
   9352     [59480, 170287], [40357, 59481], [33981, 59482], [59483, 159250],
   9353     [59484, 159711], [59485, 158594], [34300, 59486], [17715, 59487],
   9354     [59488, 159140], [59489, 159364], [59490, 159216], [33824, 59491],
   9355     [34286, 59492], [59493, 159232], [59494, 145367], [59495, 155748],
   9356     [31202, 59496], [59497, 144796], [59498, 144960], [59500, 149982],
   9357     [15714, 59501], [37851, 59502], [37566, 59503], [37704, 59504],
   9358     [59505, 131775], [30905, 59506], [37495, 59507], [37965, 59508],
   9359     [20452, 59509], [13376, 59510], [36964, 59511], [59512, 152925],
   9360     [30781, 59513], [30804, 59514], [30902, 59515], [30795, 59516],
   9361     [59517, 137047], [59518, 143817], [59519, 149825], [13978, 59520],
   9362     [20338, 59521], [28634, 59522], [28633, 59523], 0, [28702, 59524, 59525],
   9363     [21524, 59526], [59527, 147893], [22459, 59528], [22771, 59529],
   9364     [22410, 59530], [40214, 59531], [22487, 59532], [28980, 59533],
   9365     [13487, 59534], [59535, 147884], [29163, 59536], [59537, 158784],
   9366     [59538, 151447], 0, [59540, 137141], [59541, 166473], [24844, 59542],
   9367     [23246, 59543], [23051, 59544], [17084, 59545], [59546, 148616],
   9368     [14124, 59547], [19323, 59548], [59549, 166396], [37819, 59550],
   9369     [37816, 59551], [59552, 137430], [59553, 134941], [33906, 59554],
   9370     [59555, 158912], [59556, 136211], [59557, 148218], [59558, 142374],
   9371     [59559, 148417], [22932, 59560], [59561, 146871], [59562, 157505],
   9372     [32168, 59563], [59564, 155995], [59565, 155812], [59566, 149945],
   9373     [59567, 149899], [59568, 166394], [37605, 59569], [29666, 59570],
   9374     [16105, 59571], [29876, 59572], [59573, 166755], [59574, 137375],
   9375     [16097, 59575], [59576, 150195], [27352, 59577], [29683, 59578],
   9376     [29691, 59579], [16086, 59580], [59581, 150078], [59582, 150164],
   9377     [59583, 137177], [59584, 150118], [59585, 132007], [59586, 136228],
   9378     [59587, 149989], [29768, 59588], [59589, 149782], [28837, 59590],
   9379     [59591, 149878], [37508, 59592], [29670, 59593], [37727, 59594],
   9380     [59595, 132350], [37681, 59596], [59597, 166606], [59598, 166422],
   9381     [37766, 59599], [59600, 166887], [59601, 153045], [18741, 59602],
   9382     [59603, 166530], [29035, 59604], [59605, 149827], [59606, 134399],
   9383     [22180, 59607], [59608, 132634], [59609, 134123], [59610, 134328],
   9384     [21762, 59611], [31172, 59612], [59613, 137210], [32254, 59614],
   9385     [59615, 136898], [59616, 150096], [59617, 137298], [17710, 59618],
   9386     [37889, 59619], [14090, 59620], [59621, 166592], [59622, 149933],
   9387     [22960, 59623], [59624, 137407], [59625, 137347], [59626, 160900],
   9388     [23201, 59627], [14050, 59628], [59629, 146779], [14000, 59630],
   9389     [37471, 59631], [23161, 59632], [59633, 166529], [59634, 137314],
   9390     [37748, 59635], [15565, 59636], [59637, 133812], [19094, 59638],
   9391     [14730, 59639], [20724, 59640], [15721, 59641], [15692, 59642],
   9392     [59643, 136092], [29045, 59644], [17147, 59645], [59646, 164376],
   9393     [28175, 59647], [59648, 168164], [17643, 59649], [27991, 59650],
   9394     [59651, 163407], [28775, 59652], [27823, 59653], [15574, 59654],
   9395     [59655, 147437], [59656, 146989], [28162, 59657], [28428, 59658],
   9396     [15727, 59659], [59660, 132085], [30033, 59661], [14012, 59662],
   9397     [13512, 59663], [18048, 59664], [16090, 59665], [18545, 59666],
   9398     [22980, 59667], [37486, 59668], [18750, 59669], [36673, 59670],
   9399     [59671, 166940], [59672, 158656], [22546, 59673], [22472, 59674],
   9400     [14038, 59675], [59676, 136274], [28926, 59677], [59678, 148322],
   9401     [59679, 150129], [59680, 143331], [59681, 135856], [59682, 140221],
   9402     [26809, 59683], [26983, 59684], [59685, 136088], [59686, 144613],
   9403     [59687, 162804], [59688, 145119], [59689, 166531], [59690, 145366],
   9404     [59691, 144378], [59692, 150687], [27162, 59693], [59694, 145069],
   9405     [59695, 158903], [33854, 59696], [17631, 59697], [17614, 59698],
   9406     [59699, 159014], [59700, 159057], [59701, 158850], [59702, 159710], 0, 0,
   9407     [33597, 59705], [59706, 137018], [33773, 59707], [59708, 158848],
   9408     [59709, 159827], [59710, 137179], [22921, 59711], [23170, 59712],
   9409     [59713, 137139], [23137, 59714], [23153, 59715], [59716, 137477],
   9410     [59717, 147964], [14125, 59718], [23023, 59719], [59720, 137020],
   9411     [14023, 59721], [29070, 59722], [37776, 59723], [26266, 59724],
   9412     [59725, 148133], [23150, 59726], [23083, 59727], [59728, 148115],
   9413     [27179, 59729], [59730, 147193], [59731, 161590], [59732, 148571],
   9414     [59733, 148170], [28957, 59734], [59735, 148057], [59736, 166369],
   9415     [20400, 59737], [59738, 159016], [23746, 59739], [59740, 148686],
   9416     [59741, 163405], [59742, 148413], [27148, 59743], [59744, 148054],
   9417     [59745, 135940], 0, [28979, 59747], [59748, 148457], [15781, 59749],
   9418     [27871, 59750], [59751, 194597], [23019, 59754], [24412, 59757],
   9419     [59764, 144128], [31955, 59776], [59783, 162548], [59786, 153334],
   9420     [59790, 162584], [36972, 59791], [33270, 59795], [30476, 59797],
   9421     [27810, 59799], [22269, 59800], [22633, 59828], [26465, 59832],
   9422     [23646, 59838], [22770, 59841], [28857, 59843], [26627, 59853],
   9423     [36795, 59859], [36796, 59861], [20001, 59871], [31545, 59898],
   9424     [15820, 59902], [29482, 57990, 59909], [30048, 59912], [22586, 59920],
   9425     [33446, 59932], [27018, 59940], [24803, 59944], [20206, 59984],
   9426     [39364, 60002], [40639, 60023], [21249, 60025], [26528, 60038],
   9427     [24808, 60046], [20916, 60053], [31363, 60064], [39994, 60075],
   9428     [31432, 60093], [26906, 60098], [22956, 60100], [22592, 60102],
   9429     [21610, 60114], [24807, 60123], [22138, 60125], [26965, 60132],
   9430     [39983, 60133], [34725, 60134], [23584, 60141], [24075, 60143],
   9431     [26398, 60147], [33965, 60157], [35713, 60161], [20088, 60166],
   9432     [25283, 60176], [26709, 60180], 0, [33533, 60190], [35237, 60194],
   9433     [36768, 60196], [38840, 60198], [38983, 60200], [39613, 60201],
   9434     [24497, 60218], [26184, 60219], [26303, 60220], [60221, 162425], 0,
   9435     [60225, 149946], 0, 0, [60230, 131910], [26382, 60232], [26904, 60233],
   9436     [60235, 161367], [60236, 155618], [60239, 161278], [60240, 139418],
   9437     [18640, 60241], [19128, 60242], [60244, 166554], [60247, 147515],
   9438     [60250, 150085], [60251, 132554], [20946, 60252], [60253, 132625],
   9439     [22943, 60254], [60255, 138920], [15294, 60256], [60257, 146687],
   9440     [14747, 60262], [60264, 165352], [60265, 170441], [14178, 60266],
   9441     [60267, 139715], [35678, 60268], [60269, 166734], 0, [29193, 60274],
   9442     [60276, 134264], [60280, 132985], [36570, 60281], [21135, 60283],
   9443     [29041, 60285], [60288, 147274], [60289, 150183], [21948, 60290],
   9444     [60293, 158546], [13427, 60295], [60297, 161330], [18200, 60299],
   9445     [60303, 149823], [20582, 60305], [13563, 60306], [60307, 144332], 0,
   9446     [18300, 60310], [60311, 166216], [60315, 138640], 0, [60320, 162834],
   9447     [36950, 60321], [60323, 151450], [35682, 60324], [23899, 60327],
   9448     [60328, 158711], 0, [60331, 137500], [35562, 60332], [60333, 150006],
   9449     [60335, 147439], [19392, 60337], [60340, 141083], [37989, 60341],
   9450     [60342, 153569], [24981, 60343], [23079, 60344], [60345, 194765], 0,
   9451     [60348, 148769], [20074, 60350], [60351, 149812], [38486, 60352],
   9452     [28047, 60353], [60354, 158909], [35191, 60356], [60359, 156689], 0,
   9453     [31554, 60363], [60364, 168128], [60365, 133649], 0, [31301, 60369],
   9454     [39462, 60372], [13919, 60374], [60375, 156777], [60376, 131105],
   9455     [31107, 60377], [23852, 60380], [60381, 144665], 0, [18128, 60384],
   9456     [30011, 60386], [34917, 60387], [22710, 60389], [14108, 60390],
   9457     [60391, 140685], [15444, 60394], [37505, 60397], [60398, 139642],
   9458     [37680, 60400], [60402, 149968], [27705, 60403], [60406, 134904],
   9459     [34855, 60407], [35061, 60408], [60409, 141606], [60410, 164979],
   9460     [60411, 137137], [28344, 60412], [60413, 150058], [60414, 137248],
   9461     [14756, 60415], 0, 0, [17727, 60419], [26294, 60420], [60421, 171181],
   9462     [60422, 170148], [35139, 60423], [16607, 60427], [60428, 136714],
   9463     [14753, 60429], [60430, 145199], [60431, 164072], [60432, 136133],
   9464     [29101, 60433], [33638, 60434], [60436, 168360], 0, [19639, 60438],
   9465     [60439, 159919], [60440, 166315], [60445, 147834], [31555, 60446],
   9466     [31102, 60447], [28597, 60449], [60450, 172767], [27139, 60451],
   9467     [60452, 164632], [21410, 60453], [60454, 159239], [37823, 60455],
   9468     [26678, 60456], [38749, 59389, 60457], [60458, 164207], [60460, 158133],
   9469     [60461, 136173], [60462, 143919], [23941, 60464], [60465, 166960],
   9470     [22293, 60467], [38947, 60468], [60469, 166217], [23979, 60470],
   9471     [60471, 149896], [26046, 60472], [27093, 60473], [21458, 60474],
   9472     [60475, 150181], [60476, 147329], [15377, 60477], [26422, 60478],
   9473     [60482, 139169], [13770, 60490], [18682, 60493], 0, [30728, 60496],
   9474     [37461, 60497], [17394, 60499], [17375, 60501], [23032, 60505], 0,
   9475     [22155, 60518], [60520, 169449], [36882, 60541], [21953, 60546],
   9476     [17673, 60551], [32383, 60552], [28502, 60553], [27313, 60554],
   9477     [13540, 60556], [60558, 161949], [14138, 60559], 0, [60562, 163876],
   9478     [60565, 162366], [15851, 60567], [60569, 146615], [60574, 156248],
   9479     [22207, 60575], [36366, 60577], [23405, 60578], [25566, 60581], 0,
   9480     [25904, 60585], [22061, 60586], [21530, 60588], [60591, 171416],
   9481     [19581, 60592], [22050, 60593], [22046, 60594], [32585, 60595],
   9482     [22901, 60597], [60598, 146752], [34672, 60599], [33047, 60604],
   9483     [40286, 60605], [36120, 60606], [30267, 60607], [40005, 60608],
   9484     [30286, 60609], [30649, 60610], [37701, 60611], [21554, 60612],
   9485     [33096, 60613], [33527, 60614], [22053, 60615], [33074, 60616],
   9486     [33816, 60617], [32957, 60618], [21994, 60619], [31074, 60620],
   9487     [22083, 60621], [21526, 60622], [60623, 134813], [13774, 60624],
   9488     [22021, 57509, 60625], [22001, 60626], [26353, 60627], [60628, 164578],
   9489     [13869, 60629], [30004, 60630], [22000, 60631], [21946, 60632],
   9490     [21655, 60633], [21874, 60634], [60635, 134209], [60636, 134294],
   9491     [24272, 57652, 60637], [60639, 134774], [60640, 142434], [60641, 134818],
   9492     [40619, 60642], [32090, 60643], 0, [60645, 135285], [25245, 60646],
   9493     [38765, 60647], [21652, 60648], [36045, 60649], [29174, 60650],
   9494     [37238, 60651], [25596, 60652], [25529, 60653], [25598, 60654],
   9495     [21865, 60655], [60656, 142147], [40050, 60657], [60658, 143027],
   9496     [20890, 60659], [13535, 60660], [60661, 134567], [20903, 60662],
   9497     [21581, 60663], [21790, 60664], [21779, 60665], [30310, 60666],
   9498     [36397, 60667], [60668, 157834], [30129, 60669], [32950, 60670],
   9499     [34820, 60671], 0, [35015, 60673], [33206, 60674], [33820, 60675],
   9500     [17644, 60677], [29444, 60678], [33547, 60681], [22139, 60683],
   9501     [37232, 60690], [37384, 60692], [60696, 134905], [29286, 60697],
   9502     [18254, 60699], [60701, 163833], [16634, 60703], [40029, 60704],
   9503     [25887, 60705], [18675, 60707], [60708, 149472], [60709, 171388], 0,
   9504     [60713, 161187], 60715, [60716, 155720], [29091, 60718], [32398, 60719],
   9505     [40272, 60720], [13687, 60723], [27826, 60725], [21351, 60726],
   9506     [14812, 60728], [60731, 149016], [33325, 60734], [21579, 60735], 60739,
   9507     [14930, 60740], [29556, 60742], [60743, 171692], [19721, 60744],
   9508     [39917, 60745], 0, [19547, 60748], [60751, 171998], [33884, 60752],
   9509     [60754, 160434], [25390, 60757], [32037, 60758], [14890, 60761],
   9510     [36872, 60762], [21196, 60763], [15988, 60764], [13946, 60765],
   9511     [17897, 60766], [60767, 132238], [30272, 60768], [23280, 60769],
   9512     [60770, 134838], [30842, 60771], [18358, 60772], [22695, 60773],
   9513     [16575, 60774], [22140, 60775], [39819, 60776], [23924, 60777],
   9514     [30292, 60778], [60779, 173108], [40581, 60780], [19681, 60781], 0,
   9515     [14331, 60783], [24857, 60784], [60786, 148466], 60787, [22109, 60788],
   9516     [60792, 171526], [21044, 60793], [13741, 60795], 0, [40316, 60797],
   9517     [31830, 60798], [39737, 60799], [22494, 60800], [23635, 60802],
   9518     [25811, 60803], [60804, 169168], [60805, 156469], [34477, 60807],
   9519     [60808, 134440], [60811, 134513], 60812, [20990, 60813], [60814, 139023],
   9520     [23950, 60815], [38659, 60816], [60817, 138705], [40577, 60818],
   9521     [36940, 60819], [31519, 60820], [39682, 60821], [23761, 60822],
   9522     [31651, 60823], [25192, 60824], [25397, 60825], [39679, 60826],
   9523     [31695, 60827], [39722, 60828], [31870, 60829], 0, [31810, 60831],
   9524     [31878, 60832], [39957, 60833], [31740, 60834], [39689, 60835], 0, 39982,
   9525     [40794, 60839], [21875, 60840], [23491, 60841], [20477, 60842],
   9526     [40600, 60843], [20466, 60844], [21088, 60845], [21201, 60847],
   9527     [22375, 60848], [20566, 60849], [22967, 60850], [24082, 60851],
   9528     [38856, 60852], [40363, 60853], [36700, 60854], [21609, 60855],
   9529     [38836, 60856], [39232, 60857], [38842, 60858], [21292, 60859],
   9530     [24880, 60860], [26924, 60861], [21466, 60862], [39946, 60863],
   9531     [40194, 60864], [19515, 60865], [38465, 60866], [27008, 60867],
   9532     [20646, 60868], [30022, 60869], [60870, 137069], [39386, 60871],
   9533     [21107, 60872], 60873, [37209, 60874], [38529, 60875], [37212, 60876],
   9534     60877, [37201, 60878], [60879, 167575], [25471, 60880], [27338, 60882],
   9535     [22033, 60883], [37262, 60884], [30074, 60885], [25221, 60886],
   9536     [29519, 60888], [31856, 60889], [60890, 154657], 60892, [30422, 60894],
   9537     [39837, 60895], [20010, 60896], [60897, 134356], [33726, 60898],
   9538     [34882, 60899], 60900, [23626, 60901], [27072, 60902], 0, 0,
   9539     [21023, 60905], [24053, 60906], [20174, 60907], [27697, 60908],
   9540     [60909, 131570], [20281, 60910], [21660, 60911], 0, [21146, 60913],
   9541     [36226, 60914], [13822, 60915], 0, [13811, 60917], 60918, [27474, 60919],
   9542     [37244, 60920], [40869, 60921], [39831, 60922], [38958, 60923],
   9543     [39092, 60924], [39610, 60925], [40616, 60926], [40580, 60927],
   9544     [31508, 60929], 60930, [27642, 60931], [34840, 60932], [32632, 60933],
   9545     60934, [22048, 60935], [60936, 173642], [36471, 60937], [40787, 60938],
   9546     60939, [36308, 60940], [36431, 60941], [40476, 60942], [36353, 60943],
   9547     [25218, 60944], [60945, 164733], [36392, 60946], [36469, 60947],
   9548     [31443, 60948], [31294, 60950], [30936, 60951], [27882, 60952],
   9549     [35431, 60953], [30215, 60954], [40742, 60956], [27854, 60957],
   9550     [34774, 60958], [30147, 60959], [60960, 172722], [30803, 60961],
   9551     [36108, 60963], [29410, 60964], [29553, 60965], [35629, 60966],
   9552     [29442, 60967], [29937, 60968], [36075, 60969], [60970, 150203],
   9553     [34351, 60971], [24506, 60972], [34976, 60973], [17591, 60974], 60975,
   9554     [60977, 159237], 60978, [35454, 60979], [60980, 140571], 60981,
   9555     [24829, 60982], [30311, 60983], [39639, 60984], [40260, 60985],
   9556     [37742, 58859, 60986], [39823, 60987], [34805, 60988], 60989, 0,
   9557     [36087, 60991], [29484, 60992], [38689, 60993], [39856, 60994],
   9558     [13782, 60995], [29362, 60996], [19463, 60997], [31825, 60998],
   9559     [39242, 60999], [24921, 61001], [19460, 61002], [40598, 61003],
   9560     [24957, 61004], 61005, [22367, 61006], [24943, 61007], [25254, 61008],
   9561     [25145, 61009], 0, [14940, 61011], [25058, 61012], [21418, 61013],
   9562     [25444, 61015], [26626, 61016], [13778, 61017], [23895, 61018],
   9563     [36826, 61020], [61021, 167481], 61022, [20697, 61023], [30982, 61025],
   9564     [21298, 61026], [38456, 61027], [61028, 134971], [16485, 61029], 61030,
   9565     [30718, 61031], 61032, [31938, 61033], [61034, 155418], [31962, 61035],
   9566     [31277, 61036], [32870, 61037], [32867, 61038], [32077, 61039],
   9567     [29957, 61040], [29938, 61041], [35220, 61042], [33306, 61043],
   9568     [26380, 61044], [32866, 61045], [61046, 160902], [32859, 61047],
   9569     [29936, 61048], [33027, 61049], [30500, 61050], [35209, 61051],
   9570     [61052, 157644], [30035, 61053], [34729, 61055], [34766, 61056],
   9571     [33224, 61057], [34700, 61058], [35401, 61059], [36013, 61060],
   9572     [35651, 61061], [30507, 61062], [29944, 61063], [34010, 61064],
   9573     [27058, 61066], [36262, 61067], 61068, [35241, 58392, 61069], 0,
   9574     [28089, 61071], [34753, 61072], [61073, 147473], [29927, 61074],
   9575     [15835, 61075], [29046, 61076], [24740, 57702, 61077], [24988, 61078],
   9576     [15569, 61079], 0, [24695, 61081], 61082, [32625, 61083], 0,
   9577     [24809, 61086], [19326, 61087], [57344, 132423], [37595, 57345],
   9578     [57346, 132575], [57347, 147397], [34124, 57348], [17077, 57349],
   9579     [29679, 57350], [20917, 57351], [13897, 57352], [57353, 149826],
   9580     [57354, 166372], [37700, 57355], [57356, 137691], [33518, 57357],
   9581     [57358, 146632], [30780, 57359], [26436, 57360], [25311, 57361],
   9582     [57362, 149811], [57363, 166314], [57364, 131744], [57365, 158643],
   9583     [57366, 135941], [20395, 57367], [57368, 140525], [20488, 57369],
   9584     [57370, 159017], [57371, 162436], [57372, 144896], [57373, 150193],
   9585     [57374, 140563], 0, [57376, 131966], [24484, 57377], [57378, 131968],
   9586     [57379, 131911], [28379, 57380], [57381, 132127], 20702, [20737, 57383],
   9587     [13434, 57384], [20750, 57385], [39020, 57386], [14147, 57387],
   9588     [33814, 57388], [57389, 149924], [57390, 132231], [20832, 57391],
   9589     [57392, 144308], [20842, 57393], [57394, 134143], [57395, 139516],
   9590     [57396, 131813], [57397, 140592], [57398, 132494], [57399, 143923],
   9591     [57400, 137603], [23426, 57401], [34685, 57402], [57403, 132531],
   9592     [57404, 146585], [20914, 57405], [20920, 57406], [40244, 57407],
   9593     [20937, 57408], [20943, 57409], [20945, 57410], [15580, 57411],
   9594     [20947, 57412], [57413, 150182], [20915, 57414], 0, 0, [20973, 57417],
   9595     [33741, 57418], [26942, 57419], [57420, 145197], [24443, 57421],
   9596     [21003, 57422], [21030, 57423], [21052, 57424], [21173, 57425],
   9597     [21079, 57426], [21140, 57427], [21177, 57428], [21189, 57429],
   9598     [31765, 57430], [34114, 57431], [21216, 57432], [34317, 57433],
   9599     [57434, 158483], 0, [57436, 166622], [21833, 57437], [28377, 57438],
   9600     [57439, 147328], [57440, 133460], [57441, 147436], [21299, 57442], 0,
   9601     [57444, 134114], [27851, 57445], [57446, 136998], [26651, 57447],
   9602     [29653, 57448], [24650, 57449], [16042, 57450], [14540, 57451],
   9603     [57452, 136936], [29149, 57453], [17570, 57454], [21357, 57455],
   9604     [21364, 57456], [57457, 165547], [21374, 57458], 0, [57460, 136598],
   9605     [57461, 136723], [30694, 57462], [21395, 57463], [57464, 166555],
   9606     [21408, 57465], [21419, 57466], [21422, 57467], [29607, 57468],
   9607     [57469, 153458], [16217, 57470], [29596, 57471], [21441, 57472],
   9608     [21445, 57473], [27721, 57474], [20041, 57475], [22526, 57476],
   9609     [21465, 57477], [15019, 57478], [57479, 134031], [21472, 57480],
   9610     [57481, 147435], [57482, 142755], [21494, 57483], [57484, 134263],
   9611     [21523, 57485], [28793, 57486], [21803, 57487], [26199, 57488],
   9612     [27995, 57489], [21613, 57490], [57491, 158547], [57492, 134516],
   9613     [21853, 57493], [21647, 57494], [21668, 57495], [18342, 57496],
   9614     [57497, 136973], [57498, 134877], [15796, 57499], [57500, 134477],
   9615     [57501, 166332], [57502, 140952], [21831, 57503], [19693, 57504],
   9616     [21551, 57505], [29719, 57506], [21894, 57507], [21929, 57508], 0,
   9617     [57510, 137431], [57511, 147514], [17746, 57512], [57513, 148533],
   9618     [26291, 57514], [57515, 135348], [22071, 57516], [26317, 57517],
   9619     [57518, 144010], [26276, 57519], 0, [22093, 57521], [22095, 57522],
   9620     [30961, 57523], [22257, 57524], [38791, 57525], [21502, 57526],
   9621     [22272, 57527], [22255, 57528], [22253, 57529], [57530, 166758],
   9622     [13859, 57531], [57532, 135759], [22342, 57533], [57534, 147877],
   9623     [27758, 57535], [28811, 57536], [22338, 57537], [14001, 57538],
   9624     [57539, 158846], [22502, 57540], [57541, 136214], [22531, 57542],
   9625     [57543, 136276], [57544, 148323], [22566, 57545], [57546, 150517], 0,
   9626     [22698, 57548], [13665, 57549], [22752, 57550], [22748, 57551],
   9627     [57552, 135740], [22779, 57553], [23551, 57554], [22339, 57555],
   9628     [57556, 172368], [57557, 148088], [37843, 57558], [13729, 57559],
   9629     [22815, 57560], [26790, 57561], [14019, 57562], [28249, 57563],
   9630     [57564, 136766], [23076, 57565], 0, [57567, 136850], [34053, 57568],
   9631     [22985, 57569], [57570, 134478], [57571, 158849], [57572, 159018],
   9632     [57573, 137180], [23001, 57574], [57575, 137211], [57576, 137138],
   9633     [57577, 159142], [28017, 57578], [57579, 137256], [57580, 136917],
   9634     [23033, 57581], [57582, 159301], [23211, 57583], [23139, 57584],
   9635     [14054, 57585], [57586, 149929], 0, [14088, 57588], [23190, 57589],
   9636     [29797, 57590], [23251, 57591], [57592, 159649], [57593, 140628],
   9637     [57595, 137489], [14130, 57596], [57597, 136888], [24195, 57598],
   9638     [21200, 57599], [23414, 57600], [25992, 57601], [23420, 57602],
   9639     [57603, 162318], [16388, 57604], [18525, 57605], [57606, 131588],
   9640     [23509, 57607], [57609, 137780], [57610, 154060], [57611, 132517],
   9641     [23539, 57612], [23453, 57613], [19728, 57614], [23557, 57615],
   9642     [57616, 138052], [23571, 57617], [29646, 57618], [23572, 57619],
   9643     [57620, 138405], [57621, 158504], [23625, 57622], [18653, 57623],
   9644     [23685, 57624], [23785, 57625], [23791, 57626], [23947, 57627],
   9645     [57628, 138745], [57629, 138807], [23824, 57630], [23832, 57631],
   9646     [23878, 57632], [57633, 138916], [23738, 57634], [24023, 57635],
   9647     [33532, 57636], [14381, 57637], [57638, 149761], [57639, 139337],
   9648     [57640, 139635], [33415, 57641], [14390, 57642], [15298, 57643],
   9649     [24110, 57644], [27274, 57645], 0, 57647, [57648, 148668], [57649, 134355],
   9650     [21414, 57650], [20151, 57651], 0, [21416, 57653], [57654, 137073],
   9651     [24073, 57655], 57656, [57657, 164994], [24313, 57658], [24315, 57659],
   9652     [14496, 57660], [24316, 57661], [26686, 57662], [37915, 57663],
   9653     [24333, 57664], [57665, 131521], [57666, 194708], [15070, 57667],
   9654     [57669, 135994], [24378, 57670], [57671, 157832], [57672, 140240],
   9655     [57674, 140401], [24419, 57675], [57677, 159342], [24434, 57678],
   9656     [37696, 57679], [57680, 166454], [24487, 57681], [23990, 57682],
   9657     [15711, 57683], [57684, 152144], [57685, 139114], [57686, 159992],
   9658     [57687, 140904], [37334, 57688], [57689, 131742], [57690, 166441],
   9659     [24625, 57691], [26245, 57692], [14691, 57694], [15815, 57695],
   9660     [13881, 57696], [22416, 57697], [57698, 141236], [31089, 57699],
   9661     [15936, 57700], [24734, 57701], 0, 0, [57704, 149890], [57705, 149903],
   9662     [57706, 162387], [29860, 57707], [20705, 57708], [23200, 57709],
   9663     [24932, 57710], [24898, 57712], [57713, 194726], [57714, 159442],
   9664     [24961, 57715], [20980, 57716], [57717, 132694], [24967, 57718],
   9665     [23466, 57719], [57720, 147383], [57721, 141407], [25043, 57722],
   9666     [57723, 166813], [57724, 170333], [25040, 57725], [14642, 57726],
   9667     [57727, 141696], [57728, 141505], [24611, 57729], [24924, 57730],
   9668     [25886, 57731], [25483, 57732], [57733, 131352], [25285, 57734],
   9669     [57735, 137072], [25301, 57736], [57737, 142861], [25452, 57738],
   9670     [57739, 149983], [14871, 57740], [25656, 57741], [25592, 57742],
   9671     [57743, 136078], [57744, 137212], [28554, 57746], [57747, 142902], 0,
   9672     [57750, 153373], [25825, 57751], [25829, 57752], [38011, 57753],
   9673     [14950, 57754], [25658, 57755], [14935, 57756], [25933, 57757],
   9674     [28438, 57758], [57759, 150056], [57760, 150051], [25989, 57761],
   9675     [25965, 57762], [25951, 57763], 0, [26037, 57765], [57766, 149824],
   9676     [19255, 57767], [26065, 57768], [16600, 57769], [57770, 137257], 57771,
   9677     [26083, 57772], [24543, 57773], [57774, 144384], [26136, 57775],
   9678     [57776, 143863], [57777, 143864], [26180, 57778], [57779, 143780],
   9679     [57780, 143781], [26187, 57781], [57782, 134773], [26215, 57783],
   9680     [57784, 152038], [26227, 57785], 0, [57788, 143921], [57789, 165364],
   9681     [57790, 143816], [57791, 152339], [30661, 57792], [57793, 141559],
   9682     [39332, 57794], [26370, 57795], [57796, 148380], [57797, 150049],
   9683     [27130, 57799], [57800, 145346], 0, [26471, 57802], [26466, 57803],
   9684     [57804, 147917], [57805, 168173], [26583, 57806], [17641, 57807],
   9685     [26658, 57808], [28240, 57809], [37436, 57810], [26625, 57811],
   9686     [57812, 144358], [57813, 159136], [26717, 57814], [57815, 144495],
   9687     [27105, 57816], [27147, 57817], [57818, 166623], [26995, 57819],
   9688     [26819, 57820], [57821, 144845], [26881, 57822], [26880, 57823],
   9689     [14849, 57825], [57826, 144956], [15232, 57827], [26540, 57828],
   9690     [26977, 57829], [57830, 166474], [17148, 57831], [26934, 57832],
   9691     [27032, 57833], [15265, 57834], [57835, 132041], [33635, 57836],
   9692     [20624, 57837], [27129, 57838], [57839, 144985], [57840, 139562],
   9693     [27205, 57841], [57842, 145155], [27293, 57843], [15347, 57844],
   9694     [26545, 57845], [27336, 57846], [57847, 168348], [15373, 57848],
   9695     [27421, 57849], [57850, 133411], [24798, 57851, 60308], [27445, 57852],
   9696     [27508, 57853], [57854, 141261], [28341, 57855], [57856, 146139], 0,
   9697     [57858, 137560], [14144, 57859], [21537, 57860], [57861, 146266],
   9698     [27617, 57862], [57863, 147196], [27612, 57864], [27703, 57865],
   9699     [57866, 140427], [57867, 149745], [57868, 158545], [27738, 57869],
   9700     [33318, 57870], [27769, 57871], [57872, 146876], [17605, 57873],
   9701     [57874, 146877], [57875, 147876], [57876, 149772], [57877, 149760],
   9702     [57878, 146633], [14053, 57879], [15595, 57880], [57881, 134450],
   9703     [39811, 57882], [57883, 143865], [57884, 140433], [32655, 57885],
   9704     [26679, 57886], [57887, 159013], [57888, 159137], [57889, 159211],
   9705     [28054, 57890], [27996, 57891], [28284, 57892], [28420, 57893],
   9706     [57894, 149887], [57895, 147589], [57896, 159346], [34099, 57897],
   9707     [57898, 159604], [20935, 57899], 0, 0, [33838, 57902], [57903, 166689], 0,
   9708     [57905, 146991], [29779, 57906], [57907, 147330], [31180, 57908],
   9709     [28239, 57909], [23185, 57910], [57911, 143435], [28664, 57912],
   9710     [14093, 57913], [28573, 57914], [57915, 146992], [28410, 57916],
   9711     [57917, 136343], [57918, 147517], [17749, 57919], [37872, 57920],
   9712     [28484, 57921], [28508, 57922], [15694, 57923], [28532, 57924],
   9713     [57925, 168304], [15675, 57926], [28575, 57927], [57928, 147780],
   9714     [28627, 57929], [57930, 147601], [57931, 147797], [57932, 147513],
   9715     [57933, 147440], [57934, 147380], [57935, 147775], [20959, 57936],
   9716     [57937, 147798], [57938, 147799], [57939, 147776], [57940, 156125],
   9717     [28747, 57941], [28798, 57942], [28839, 57943], 0, [28876, 57945],
   9718     [28885, 57946], [28886, 57947], [28895, 57948], [16644, 57949],
   9719     [15848, 57950], [29108, 57951], [29078, 57952], [57953, 148087],
   9720     [28971, 57954], [28997, 57955], [23176, 57956], [29002, 57957], 0,
   9721     [57960, 148325], [29007, 57961], [37730, 57962], [57963, 148161],
   9722     [28972, 57964], [57965, 148570], [57966, 150055], [57967, 150050],
   9723     [29114, 57968], [57969, 166888], [28861, 57970], [29198, 57971],
   9724     [37954, 57972], [29205, 57973], [22801, 57974], [37955, 57975],
   9725     [29220, 57976], [37697, 57977], [57978, 153093], [29230, 57979],
   9726     [29248, 57980], [57981, 149876], [26813, 57982], [29269, 57983],
   9727     [29271, 57984], [15957, 57985], [57986, 143428], [26637, 57987],
   9728     [28477, 57988], [29314, 57989], 0, [29483, 57991], [57992, 149539],
   9729     [57993, 165931], [18669, 57994], [57995, 165892], [29480, 57996],
   9730     [29486, 57997], [29647, 57998], [29610, 57999], [58000, 134202],
   9731     [58001, 158254], [29641, 58002], [29769, 58003], [58004, 147938],
   9732     [58005, 136935], [58006, 150052], [26147, 58007], [14021, 58008],
   9733     [58009, 149943], [58010, 149901], [58011, 150011], [29687, 58012],
   9734     [29717, 58013], [26883, 58014], [58015, 150054], [29753, 58016],
   9735     [16087, 58018], 0, [58020, 141485], [29792, 58021], [58022, 167602],
   9736     [29767, 58023], [29668, 58024], [29814, 58025], [33721, 58026],
   9737     [29804, 58027], [29812, 58029], [37873, 58030], [27180, 58031],
   9738     [29826, 58032], [18771, 58033], [58034, 150156], [58035, 147807],
   9739     [58036, 150137], [58037, 166799], [23366, 58038], [58039, 166915],
   9740     [58040, 137374], [29896, 58041], [58042, 137608], [29966, 58043],
   9741     [29982, 58045], [58046, 167641], [58047, 137803], [23511, 58048],
   9742     [58049, 167596], [37765, 58050], [30029, 58051], [30026, 58052],
   9743     [30055, 58053], [30062, 58054], [58055, 151426], [16132, 58056],
   9744     [58057, 150803], [30094, 58058], [29789, 58059], [30110, 58060],
   9745     [30132, 58061], [30210, 58062], [30252, 58063], [30289, 58064],
   9746     [30287, 58065], [30319, 58066], 58067, [58068, 156661], [30352, 58069],
   9747     [33263, 58070], [14328, 58071], [58072, 157969], [58073, 157966],
   9748     [30369, 58074], [30373, 58075], [30391, 58076], [30412, 58077],
   9749     [58078, 159647], [33890, 58079], [58080, 151709], [58081, 151933],
   9750     [58082, 138780], [30494, 58083], [30502, 58084], [30528, 58085],
   9751     [25775, 58086], [58087, 152096], [30552, 58088], [58089, 144044],
   9752     [30639, 58090], [58091, 166244], [58092, 166248], [58093, 136897],
   9753     [30708, 58094], 0, [26826, 58098], [30895, 58099], [30919, 58100],
   9754     [30931, 58101], [38565, 58102], [31022, 58103], [58104, 153056],
   9755     [30935, 58105], [31028, 58106], [30897, 58107], [58108, 161292],
   9756     [36792, 58109], [34948, 58110], [58113, 140828], [31110, 58114],
   9757     [35072, 58115], [26882, 58116], [31104, 58117], [58118, 153687],
   9758     [31133, 58119], [58120, 162617], [31036, 58121], [31145, 58122],
   9759     [28202, 58123], [58124, 160038], [16040, 58125], [31174, 58126],
   9760     [58127, 168205], [31188, 58128], 0, [21797, 62526], 0, [62528, 134210],
   9761     [62529, 134421], [62530, 151851], [21904, 62531], [62532, 142534],
   9762     [14828, 62533], [62534, 131905], [36422, 62535], [62536, 150968],
   9763     [62537, 169189], 0, [62539, 164030], [30586, 62540], [62541, 142392],
   9764     [14900, 62542], [18389, 62543], [62544, 164189], [62545, 158194],
   9765     [62546, 151018], [25821, 62547], [62548, 134524], [62549, 135092],
   9766     [62550, 134357], 0, [25741, 62552], [36478, 62553], [62554, 134806], 0,
   9767     [62556, 135012], [62557, 142505], [62558, 164438], [62559, 148691], 0,
   9768     [62561, 134470], [62562, 170573], [62563, 164073], [18420, 62564],
   9769     [62565, 151207], [62566, 142530], [39602, 62567], [14951, 62568],
   9770     [62569, 169460], [16365, 62570], [13574, 62571], [62572, 152263],
   9771     [62573, 169940], 0, [62575, 142660], [40302, 62576], [38933, 62577], 0,
   9772     [17369, 62579], 0, [25780, 62581], [21731, 62582], 0, [62584, 142282], 0,
   9773     [14843, 62586], 0, [62588, 157402], [62589, 157462], [62590, 162208],
   9774     [25834, 62591], [62592, 151634], [62593, 134211], [36456, 62594], 0,
   9775     [62596, 166732], [62597, 132913], 0, [18443, 62599], [62600, 131497],
   9776     [16378, 62601], [22643, 62602], [62603, 142733], 0, [62605, 148936],
   9777     [62606, 132348], [62607, 155799], [62608, 134988], 0, [21881, 62610], 0,
   9778     [17338, 62612], 0, [19124, 62614], [62615, 141926], [62616, 135325],
   9779     [33194, 62617], [39157, 62618], [62619, 134556], [25465, 62620],
   9780     [14846, 62621], [62622, 141173], [36288, 62623], [22177, 62624],
   9781     [25724, 62625], [15939, 62626], 0, [62628, 173569], [62629, 134665],
   9782     [62630, 142031], 0, 0, [62633, 135368], [62634, 145858], [14738, 62635],
   9783     [14854, 62636], [62637, 164507], [13688, 62638], [62639, 155209],
   9784     [62640, 139463], 0, 0, [62643, 142514], [62644, 169760], [13500, 62645],
   9785     [27709, 62646], [62647, 151099], 0, 0, [62650, 161140], [62651, 142987],
   9786     [62652, 139784], [62653, 173659], [62654, 167117], [62655, 134778],
   9787     [62656, 134196], [62683, 161337], [62684, 142286], [62687, 142417],
   9788     [14872, 62689], [62691, 135367], [62693, 173618], [62695, 167122],
   9789     [62696, 167321], [62697, 167114], [38314, 62698], 0, [62706, 161630],
   9790     [28992, 62708], 0, [20822, 62385], 0, [20616, 62487], 0, [13459, 62489],
   9791     [20870, 62491], [24130, 63037], [20997, 62495], [21031, 62436],
   9792     [21113, 62497], 0, [13651, 62504], [21442, 62505], [21343, 62715], 0,
   9793     [21823, 62520], 0, [21976, 59986], [13789, 62722], [22049, 63067], 0,
   9794     [22100, 60044], [60148, 135291], 0, [60153, 135379], 0, [61095, 135934], 0,
   9795     0, [14265, 60104], [23745, 61099], [23829, 63066], [23894, 63030],
   9796     [14392, 63036], [20097, 62477], [24253, 63038], [14612, 63042],
   9797     [25017, 63050], [25232, 63054], [25368, 63056], [25690, 63063],
   9798     [25745, 62381], [33133, 62709], [33156, 59922], [33171, 59924],
   9799     [26624, 63080], [15292, 63093], [29327, 60517], [29389, 59781], 0,
   9800     [29497, 59785], [30018, 59811], [30172, 59817], [16320, 59818],
   9801     [60278, 151205], [16343, 59820], 0, 30336, [30348, 59824, 151388],
   9802     [16552, 59845], [30777, 59846], [16643, 59855], [31377, 59863],
   9803     [31771, 59876], [31981, 59884], [32659, 62658], [32686, 59892], 0,
   9804     [33535, 59936], [22623, 59981], [34482, 59960], 0, [34699, 59963],
   9805     [35143, 59969], 0, [35369, 59972], 0, [36465, 59988], [60484, 164233],
   9806     [36528, 59990], 0, [37214, 62443], [37260, 62441], [39182, 60051],
   9807     [39196, 60054], 0, 0, [39809, 60066], [40384, 60080], [40339, 60078],
   9808     [40620, 60085], [19857, 60540], 0, 37818, [40571, 60084], [28809, 63148],
   9809     [29512, 59788], 0, [31129, 59858], [36791, 59997], 0, [39234, 60056],
   9810     {s: 193}, 8364, {s: 4}, [12443, 63518], [12444, 63519], [11904, 63520],
   9811     {f: 5, c: 62211}, [62216, 131340], 62217, [62218, 131281], [62219, 131277],
   9812     {f: 2, c: 62220}, [62222, 131275], [62223, 139240], 62224, [62225, 131274],
   9813     {f: 4, c: 62226}, [62230, 131342], {f: 2, c: 62231}, {f: 2, c: 62776},
   9814     [62778, 138177], [62779, 194680], [12205, 38737, 62780], [62781, 131206],
   9815     [20059, 62782], [20155, 62783], [13630, 62784], [23587, 62785],
   9816     [24401, 62786], [24516, 62787], [14586, 62788], [25164, 62789],
   9817     [25909, 62790], [27514, 62791], [27701, 62792], [27706, 62793],
   9818     [28780, 62794], [29227, 62795], [20012, 62796], [29357, 62797],
   9819     [62798, 149737], [32594, 62799], [31035, 62800], [31993, 62801],
   9820     [32595, 62802], [62803, 156266], [13505, 62804], [62806, 156491],
   9821     [32770, 62807], [32896, 62808], [62809, 157202], [62810, 158033],
   9822     [21341, 62811], [34916, 62812], [35265, 62813], [62814, 161970],
   9823     [35744, 62815], [36125, 62816], [38021, 62817], [38264, 62818],
   9824     [38271, 62819], [38376, 62820], [62821, 167439], [38886, 62822],
   9825     [39029, 62823], [39118, 62824], [39134, 62825], [39267, 62826],
   9826     [62827, 170000], [40060, 62828], [40479, 62829], [40644, 62830],
   9827     [27503, 62831], [62832, 63751], [20023, 62833], [62834, 131207],
   9828     [38429, 62835], [25143, 62836], [38050, 62837], [11908, 63521],
   9829     [11910, 63522], [11911, 63523], [11912, 63524], [11914, 63525],
   9830     [11916, 63526], [11917, 63527], [11925, 63528], [11932, 63529],
   9831     [11941, 63531], [11943, 63532], [11946, 63533], [11948, 63534],
   9832     [11950, 63535], [11958, 63536], [11964, 63537], [11966, 63538],
   9833     [11978, 63540], [11980, 63541], [11981, 63542], [11983, 63543],
   9834     [11990, 63544], [11991, 63545], [11998, 63546], [62368, 172969],
   9835     [62369, 135493], [25866, 62371], [20029, 62374], [28381, 62375],
   9836     [40270, 62376], [37343, 62377], [62380, 161589], [20250, 62382],
   9837     [20264, 62383], [20392, 62384], [20852, 62386], [20892, 62387],
   9838     [20964, 62388], [21153, 62389], [21160, 62390], [21307, 62391],
   9839     [21326, 62392], [21457, 62393], [21464, 62394], [22242, 62395],
   9840     [22768, 62396], [22788, 62397], [22791, 62398], [22834, 62399],
   9841     [22836, 62400], [23398, 62401], [23454, 62402], [23455, 62403],
   9842     [23706, 62404], [24198, 62405], [24635, 62406], [25993, 62407],
   9843     [26622, 62408], [26628, 62409], [26725, 62410], [27982, 62411],
   9844     [28860, 62412], [30005, 62413], [32420, 62414], [32428, 62415],
   9845     [32442, 62416], [32455, 62417], [32463, 62418], [32479, 62419],
   9846     [32518, 62420], [32567, 62421], [33402, 62422], [33487, 62423],
   9847     [33647, 62424], [35270, 62425], [35774, 62426], [35810, 62427],
   9848     [36710, 62428], [36711, 62429], [36718, 62430], [29713, 62431],
   9849     [31996, 62432], [32205, 62433], [26950, 62434], [31433, 62435],
   9850     [30904, 62442], [32956, 62444], [36107, 62446], [33014, 62447],
   9851     [62448, 133607], [32927, 62451], [40647, 62452], [19661, 62453],
   9852     [40393, 62454], [40460, 62455], [19518, 62456], [62457, 171510],
   9853     [62458, 159758], [40458, 62459], [62460, 172339], [13761, 62461],
   9854     [28314, 62463], [33342, 62464], [29977, 62465], [18705, 62467],
   9855     [39532, 62468], [39567, 62469], [40857, 62470], [31111, 62471],
   9856     [62472, 164972], [62473, 138698], [62474, 132560], [62475, 142054],
   9857     [20004, 62476], [20096, 62478], [20103, 62479], [20159, 62480],
   9858     [20203, 62481], [20279, 62482], [13388, 62483], [20413, 62484],
   9859     [15944, 62485], [20483, 62486], [13437, 62488], [13477, 62490],
   9860     [22789, 62492], [20955, 62493], [20988, 62494], [20105, 62496],
   9861     [21136, 62498], [21287, 62499], [13767, 62500], [21417, 62501],
   9862     [13649, 62502], [21424, 62503], [21539, 62506], [13677, 62507],
   9863     [13682, 62508], [13953, 62509], [21651, 62510], [21667, 62511],
   9864     [21684, 62512], [21689, 62513], [21712, 62514], [21743, 62515],
   9865     [21784, 62516], [21795, 62517], [21800, 62518], [13720, 62519],
   9866     [13733, 62521], [13759, 62522], [21975, 62523], [13765, 62524],
   9867     [62525, 163204], [16467, 62538], [62551, 135412], [62555, 134155],
   9868     [62574, 161992], [62580, 155813], [62583, 142668], [62585, 135287],
   9869     [62587, 135279], [62595, 139681], [62609, 134550], [16571, 62611],
   9870     [62631, 142537], [22098, 62641], [62642, 134961], [62657, 157724],
   9871     [62659, 135375], [62660, 141315], [62661, 141625], [13819, 62662],
   9872     [62663, 152035], [62664, 134796], [62665, 135053], [62666, 134826],
   9873     [16275, 62667], [62668, 134960], [62669, 134471], [62670, 135503],
   9874     [62671, 134732], [62673, 134827], [62674, 134057], [62675, 134472],
   9875     [62676, 135360], [62677, 135485], [16377, 62678], [62679, 140950],
   9876     [25650, 62680], [62681, 135085], [62682, 144372], [62685, 134526],
   9877     [62686, 134527], [62688, 142421], [62690, 134808], [62692, 134958],
   9878     [62694, 158544], [21708, 62699], [33476, 62700], [21945, 62701],
   9879     [62703, 171715], [39974, 62704], [39606, 62705], [62707, 142830],
   9880     [33004, 62710], [23580, 62711], [62712, 157042], [33076, 62713],
   9881     [14231, 62714], [62716, 164029], [37302, 62717], [62718, 134906],
   9882     [62719, 134671], [62720, 134775], [62721, 134907], [62723, 151019],
   9883     [13833, 62724], [62725, 134358], [22191, 62726], [62727, 141237],
   9884     [62728, 135369], [62729, 134672], [62730, 134776], [62731, 135288],
   9885     [62732, 135496], [62733, 164359], [62734, 136277], [62735, 134777],
   9886     [62736, 151120], [62737, 142756], [23124, 62738], [62739, 135197],
   9887     [62740, 135198], [62741, 135413], [62742, 135414], [22428, 62743],
   9888     [62744, 134673], [62745, 161428], [62746, 164557], [62747, 135093],
   9889     [62748, 134779], [62749, 151934], [14083, 62750], [62751, 135094],
   9890     [62752, 135552], [62753, 152280], [62754, 172733], [62755, 149978],
   9891     [62756, 137274], [62757, 147831], [62758, 164476], [22681, 62759],
   9892     [21096, 62760], [13850, 62761], [62762, 153405], [31666, 62763],
   9893     [23400, 62764], [18432, 62765], [19244, 62766], [40743, 62767],
   9894     [18919, 62768], [39967, 62769], [39821, 62770], [62771, 154484],
   9895     [62772, 143677], [22011, 62773], [13810, 62774], [22153, 62775],
   9896     [23870, 63028], [23880, 63029], [15868, 63031], [14351, 63032],
   9897     [23972, 63033], [23993, 63034], [14368, 63035], [24357, 63039],
   9898     [24451, 63040], [14600, 63041], [14655, 63043], [14669, 63044],
   9899     [24791, 63045], [24893, 63046], [23781, 63047], [14729, 63048],
   9900     [25015, 63049], [25039, 63051], [14776, 63052], [25132, 63053],
   9901     [25317, 63055], [14840, 63057], [22193, 63058], [14851, 63059],
   9902     [25570, 63060], [25595, 63061], [25607, 63062], [14923, 63064],
   9903     [25792, 63065], [40863, 63068], [14999, 63069], [25990, 63070],
   9904     [15037, 63071], [26111, 63072], [26195, 63073], [15090, 63074],
   9905     [26258, 63075], [15138, 63076], [26390, 63077], [15170, 63078],
   9906     [26532, 63079], [15192, 63081], [26698, 63082], [26756, 63083],
   9907     [15218, 63084], [15217, 63085], [15227, 63086], [26889, 63087],
   9908     [26947, 63088], [29276, 63089], [26980, 63090], [27039, 63091],
   9909     [27013, 63092], [27094, 63094], [15325, 63095], [27237, 63096],
   9910     [27252, 63097], [27249, 63098], [27266, 63099], [15340, 63100],
   9911     [27289, 63101], [15346, 63102], [27307, 63103], [27317, 63104],
   9912     [27348, 63105], [27382, 63106], [27521, 63107], [27585, 63108],
   9913     [27626, 63109], [27765, 63110], [27818, 63111], [15563, 63112],
   9914     [27906, 63113], [27910, 63114], [27942, 63115], [28033, 63116],
   9915     [15599, 63117], [28068, 63118], [28081, 63119], [28181, 63120],
   9916     [28184, 63121], [28201, 63122], [28294, 63123], [63124, 166336],
   9917     [28347, 63125], [28386, 63126], [28378, 63127], [40831, 63128],
   9918     [28392, 63129], [28393, 63130], [28452, 63131], [28468, 63132],
   9919     [15686, 63133], [63134, 147265], [28545, 63135], [28606, 63136],
   9920     [15722, 63137], [15733, 63138], [29111, 63139], [23705, 63140],
   9921     [15754, 63141], [28716, 63142], [15761, 63143], [28752, 63144],
   9922     [28756, 63145], [28783, 63146], [28799, 63147], [63149, 131877],
   9923     [17345, 63150], [13809, 63151], [63152, 134872], [13902, 58134],
   9924     [15789, 58172], [58173, 154725], [26237, 58183], [31860, 58188],
   9925     [29837, 58197], [32402, 58215], [17667, 58232], [58260, 151480],
   9926     [58270, 133901], [58277, 158474], [13438, 58311], [58317, 143087],
   9927     [58325, 146613], [58343, 159385], [34673, 58364], [25537, 58385],
   9928     [30583, 58387], [35210, 58390], [58406, 147343], [35660, 58415],
   9929     [58440, 150729], [18730, 58464], [58471, 172052], [58472, 165564],
   9930     [58473, 165121], [15088, 58490], [28815, 58511], [58529, 140922],
   9931     [58637, 158120], [58646, 148043], [26760, 58662], [58664, 139611],
   9932     [40802, 58702], [37830, 58793], [58802, 131967], [37734, 58888],
   9933     [37519, 58901], [34324, 58954], [58986, 173147], [16784, 59010],
   9934     [26511, 59045], [26654, 59048], [14435, 59051], [59077, 149996],
   9935     [15129, 59128], [33942, 59176], [59241, 149858], [14818, 59254],
   9936     [33920, 59259], [17262, 59328], [38769, 59402], [39323, 59427],
   9937     [18733, 59499], [28439, 59703], [59704, 160009], [28838, 59746],
   9938     [59752, 150095], [32357, 59753], [23855, 59755], [15859, 59756],
   9939     [59758, 150109], [59759, 137183], [32164, 59760], [33830, 59761],
   9940     [21637, 59762], [59763, 146170], [59765, 131604], [22398, 59766],
   9941     [59767, 133333], [59768, 132633], [16357, 59769], [59770, 139166],
   9942     [59771, 172726], [28675, 59772], [59773, 168283], [23920, 59774],
   9943     [29583, 59775], [59777, 166489], [59778, 168992], [20424, 59779],
   9944     [32743, 59780], [29456, 59782], [29496, 59784], [29505, 59787],
   9945     [16041, 59789], [29173, 59792], [59793, 149746], [29665, 59794],
   9946     [16074, 59796], [16081, 59798], [29721, 59801], [29726, 59802],
   9947     [29727, 59803], [16098, 59804], [16112, 59805], [16116, 59806],
   9948     [16122, 59807], [29907, 59808], [16142, 59809], [16211, 59810],
   9949     [30061, 59812], [30066, 59813], [30093, 59814], [16252, 59815],
   9950     [30152, 59816], [30285, 59819], [30324, 59821], [16348, 59822],
   9951     [30330, 59823], [29064, 59825], [22051, 59826], [35200, 59827],
   9952     [16413, 59829], [30531, 59830], [16441, 59831], [16453, 59833],
   9953     [13787, 59834], [30616, 59835], [16490, 59836], [16495, 59837],
   9954     [30654, 59839], [30667, 59840], [30744, 59842], [30748, 59844],
   9955     [30791, 59847], [30801, 59848], [30822, 59849], [33864, 59850],
   9956     [59851, 152885], [31027, 59852], [31026, 59854], [16649, 59856],
   9957     [31121, 59857], [31238, 59860], [16743, 59862], [16818, 59864],
   9958     [31420, 59865], [33401, 59866], [16836, 59867], [31439, 59868],
   9959     [31451, 59869], [16847, 59870], [31586, 59872], [31596, 59873],
   9960     [31611, 59874], [31762, 59875], [16992, 59877], [17018, 59878],
   9961     [31867, 59879], [31900, 59880], [17036, 59881], [31928, 59882],
   9962     [17044, 59883], [36755, 59885], [28864, 59886], [59887, 134351],
   9963     [32207, 59888], [32212, 59889], [32208, 59890], [32253, 59891],
   9964     [32692, 59893], [29343, 59894], [17303, 59895], [32800, 59896],
   9965     [32805, 59897], [32814, 59899], [32817, 59900], [32852, 59901],
   9966     [22452, 59903], [28832, 59904], [32951, 59905], [33001, 59906],
   9967     [17389, 59907], [33036, 59908], [33038, 59910], [33042, 59911],
   9968     [33044, 59913], [17409, 59914], [15161, 59915], [33110, 59916],
   9969     [33113, 59917], [33114, 59918], [17427, 59919], [33148, 59921],
   9970     [17445, 59923], [17453, 59925], [33189, 59926], [22511, 59927],
   9971     [33217, 59928], [33252, 59929], [33364, 59930], [17551, 59931],
   9972     [33398, 59933], [33482, 59934], [33496, 59935], [17584, 59937],
   9973     [33623, 59938], [38505, 59939], [33797, 59941], [28917, 59942],
   9974     [33892, 59943], [33928, 59945], [17668, 59946], [33982, 59947],
   9975     [34017, 59948], [34040, 59949], [34064, 59950], [34104, 59951],
   9976     [34130, 59952], [17723, 59953], [34159, 59954], [34160, 59955],
   9977     [34272, 59956], [17783, 59957], [34418, 59958], [34450, 59959],
   9978     [34543, 59961], [38469, 59962], [17926, 59964], [17943, 59965],
   9979     [34990, 59966], [35071, 59967], [35108, 59968], [35217, 59970],
   9980     [59971, 162151], [35384, 59973], [35476, 59974], [35508, 59975],
   9981     [35921, 59976], [36052, 59977], [36082, 59978], [36124, 59979],
   9982     [18328, 59980], [36291, 59982], [18413, 59983], [36410, 59985],
   9983     [22356, 59987], [22005, 59989], [18487, 59991], [36558, 59992],
   9984     [36578, 59993], [36580, 59994], [36589, 59995], [36594, 59996],
   9985     [36801, 59998], [36810, 59999], [36812, 60000], [36915, 60001],
   9986     [18605, 60003], [39136, 60004], [37395, 60005], [18718, 60006],
   9987     [37416, 60007], [37464, 60008], [37483, 60009], [37553, 60010],
   9988     [37550, 60011], [37567, 60012], [37603, 60013], [37611, 60014],
   9989     [37619, 60015], [37620, 60016], [37629, 60017], [37699, 60018],
   9990     [37764, 60019], [37805, 60020], [18757, 60021], [18769, 60022],
   9991     [37911, 60024], [37917, 60026], [37933, 60027], [37950, 60028],
   9992     [18794, 60029], [37972, 60030], [38009, 60031], [38189, 60032],
   9993     [38306, 60033], [18855, 60034], [38388, 60035], [38451, 60036],
   9994     [18917, 60037], [18980, 60039], [38720, 60040], [18997, 60041],
   9995     [38834, 60042], [38850, 60043], [19172, 60045], [39097, 60047],
   9996     [19225, 60048], [39153, 60049], [22596, 60050], [39193, 60052],
   9997     [39223, 60055], [39261, 60057], [39266, 60058], [19312, 60059],
   9998     [39365, 60060], [19357, 60061], [39484, 60062], [39695, 60063],
   9999     [39785, 60065], [39901, 60067], [39921, 60068], [39924, 60069],
   10000     [19565, 60070], [39968, 60071], [14191, 60072], [60073, 138178],
   10001     [40265, 60074], [40702, 60076], [22096, 60077], [40381, 60079],
   10002     [40444, 60081], [38134, 60082], [36790, 60083], [40625, 60086],
   10003     [40637, 60087], [40646, 60088], [38108, 60089], [40674, 60090],
   10004     [40689, 60091], [40696, 60092], [40772, 60094], [60095, 131220],
   10005     [60096, 131767], [60097, 132000], [38083, 60099], [60101, 132311],
   10006     [38081, 60103], [60105, 132565], [60106, 132629], [60107, 132726],
   10007     [60108, 136890], [22359, 60109], [29043, 60110], [60111, 133826],
   10008     [60112, 133837], [60113, 134079], [60115, 194619], [60116, 134091],
   10009     [21662, 60117], [60118, 134139], [60119, 134203], [60120, 134227],
   10010     [60121, 134245], [60122, 134268], [60124, 134285], [60126, 134325],
   10011     [60127, 134365], [60128, 134381], [60129, 134511], [60130, 134578],
   10012     [60131, 134600], [60135, 134660], [60136, 134670], [60137, 134871],
   10013     [60138, 135056], [60139, 134957], [60140, 134771], [60142, 135100],
   10014     [60144, 135260], [60145, 135247], [60146, 135286], [60149, 135304],
   10015     [60150, 135318], [13895, 60151], [60152, 135359], [60154, 135471],
   10016     [60155, 135483], [21348, 60156], [60158, 135907], [60159, 136053],
   10017     [60160, 135990], [60162, 136567], [60163, 136729], [60164, 137155],
   10018     [60165, 137159], [28859, 60167], [60168, 137261], [60169, 137578],
   10019     [60170, 137773], [60171, 137797], [60172, 138282], [60173, 138352],
   10020     [60174, 138412], [60175, 138952], [60177, 138965], [60178, 139029],
   10021     [29080, 60179], [60181, 139333], [27113, 60182], [14024, 60183],
   10022     [60184, 139900], [60185, 140247], [60186, 140282], [60187, 141098],
   10023     [60188, 141425], [60189, 141647], [60191, 141671], [60192, 141715],
   10024     [60193, 142037], [60195, 142056], [60197, 142094], [60199, 142143],
   10025     [60202, 142412], [60204, 142472], [60205, 142519], [60206, 154600],
   10026     [60207, 142600], [60208, 142610], [60209, 142775], [60210, 142741],
   10027     [60211, 142914], [60212, 143220], [60213, 143308], [60214, 143411],
   10028     [60215, 143462], [60216, 144159], [60217, 144350], [60222, 144743],
   10029     [60223, 144883], [60227, 144922], [60228, 145174], [22709, 60231],
   10030     [60234, 146087], [60237, 146961], [60238, 147129], [60243, 147737],
   10031     [60245, 148206], [60246, 148237], [60248, 148276], [60249, 148374],
   10032     [60258, 148484], [60259, 148694], [22408, 60260], [60261, 149108],
   10033     [60263, 149295], [60271, 149522], [60272, 149755], [60273, 150037],
   10034     [60275, 150208], [22885, 60277], [60279, 151430], [60282, 151596],
   10035     [22335, 60284], [60286, 152217], [60287, 152601], [60291, 152646],
   10036     [60292, 152686], [60296, 152895], [60298, 152926], [60300, 152930],
   10037     [60301, 152934], [60302, 153543], [60304, 153693], [60309, 153859],
   10038     [60312, 154286], [60313, 154505], [60314, 154630], [22433, 60316],
   10039     [29009, 60317], [60319, 155906], [60322, 156082], [60325, 156674],
   10040     [60326, 156746], [60330, 156804], [60334, 156808], [60336, 156946],
   10041     [60338, 157119], [60339, 157365], [22201, 60347], [60349, 157436],
   10042     [13848, 60355], [60357, 157593], [60358, 157806], [60360, 157790],
   10043     [60362, 157895], [60366, 157990], [60368, 158009], [60371, 158202],
   10044     [60373, 158253], [60378, 158260], [60379, 158555], [60383, 158621],
   10045     [60385, 158884], [60388, 159150], [60392, 159819], [60393, 160205],
   10046     [60395, 160384], [60396, 160389], [60399, 160395], [60401, 160486],
   10047     [38047, 60404], [60405, 160848], [14009, 60416], [60424, 161740],
   10048     [60425, 161880], [22230, 60426], [60435, 162269], [60441, 162301],
   10049     [60442, 162314], [60443, 162571], [60444, 163174], [60448, 163849],
   10050     [60459, 163875], [60463, 163912], [60466, 163971], [60479, 163984],
   10051     [60480, 164084], [60481, 164142], [60483, 164175], [60485, 164271],
   10052     [60486, 164378], [60487, 164614], [60488, 164655], [60489, 164746],
   10053     [60491, 164968], [60492, 165546], [25574, 60494], [60495, 166230],
   10054     [60498, 166328], [60500, 166375], [60502, 166376], [60503, 166726],
   10055     [60504, 166868], [60506, 166921], [60508, 167877], [60509, 168172],
   10056     [60511, 168208], [60512, 168252], [15863, 60513], [60514, 168286],
   10057     [60515, 150218], [36816, 60516], [60519, 169191], [60521, 169392],
   10058     [60522, 169400], [60523, 169778], [60524, 170193], [60525, 170313],
   10059     [60526, 170346], [60527, 170435], [60528, 170536], [60529, 170766],
   10060     [60530, 171354], [60531, 171419], [32415, 60532], [60533, 171768],
   10061     [60534, 171811], [19620, 60535], [38215, 60536], [60537, 172691],
   10062     [29090, 60538], [60539, 172799], [60542, 173515], [19868, 60543],
   10063     [60544, 134300], [36798, 60545], [36794, 60547], [60548, 140464],
   10064     [36793, 60549], [60550, 150163], [20202, 60555], [60557, 166700],
   10065     [36480, 60560], [60561, 137205], [60563, 166764], [60564, 166809],
   10066     [60566, 157359], [60568, 161365], [60570, 153141], [60571, 153942],
   10067     [20122, 60572], [60573, 155265], [60576, 134765], [60579, 147080],
   10068     [60580, 150686], [60583, 137206], [60584, 137339], [60587, 154698],
   10069     [60589, 152337], [15814, 60590], [60596, 155352], [19996, 60600],
   10070     [60601, 135146], [60602, 134473], [60603, 145082], [60638, 151880],
   10071     [21982, 60644], [34694, 60672], [60676, 135361], [60679, 149254],
   10072     [23440, 60680], [60682, 157843], [60684, 141044], [60685, 163119],
   10073     [60686, 147875], [60687, 163187], [60688, 159440], [60689, 160438],
   10074     [60691, 135641], [60693, 146684], [60694, 173737], [60695, 134828],
   10075     [60698, 138402], [60700, 151490], [60702, 135147], [60706, 142752],
   10076     [60710, 135148], [60711, 134666], [60714, 135149], [60717, 135559],
   10077     [19994, 60721], [19972, 60722], [23309, 60724], [13996, 60727],
   10078     [21373, 60729], [13989, 60730], [22682, 60732], [60733, 150382],
   10079     [22442, 60736], [60737, 154261], [60738, 133497], [60741, 140389],
   10080     [60746, 146686], [60747, 171824], [60749, 151465], [60750, 169374],
   10081     [60753, 146870], [60755, 157619], [60756, 145184], [60759, 147191],
   10082     [60760, 146988], [60785, 143578], [60789, 135849], [22439, 60790],
   10083     [60791, 149859], [60794, 159918], [60801, 137068], [60806, 160100],
   10084     [60809, 159010], [60810, 150242], [39963, 60837], [60838, 149822],
   10085     [15878, 60846], [60881, 159011], [60887, 132092], [60891, 146685],
   10086     [60893, 149785], [22394, 60904], [21722, 60912], [29050, 60928],
   10087     [60949, 150135], [60955, 166490], [60962, 194624], [60976, 137275],
   10088     [61000, 155993], [61014, 144373], [61019, 166850], [61024, 138566],
   10089     [61054, 159441], [13877, 61065], [61084, 166701], [21024, 61088],
   10090     [15384, 61089], [61090, 146631], [61091, 155351], [61092, 161366],
   10091     [61093, 152881], [61094, 137540], [61096, 170243], [61097, 159196],
   10092     [61098, 159917], [61100, 156077], [61101, 166415], [61102, 145015],
   10093     [61103, 131310], [61104, 157766], [61105, 151310], [17762, 61106],
   10094     [23327, 61107], [61108, 156492], [40784, 61109], [40614, 61110],
   10095     [61111, 156267], [20962, 57415], [21314, 57416], [26285, 57520],
   10096     [22620, 57547], [21843, 57566], [15749, 57594], [24928, 57608],
   10097     [18606, 57668], [38845, 57676], [57693, 137335], [24755, 57703],
   10098     [33828, 57711], [38932, 57748], [57749, 147596], [57764, 143486],
   10099     [57787, 138813], [15147, 57798], [15666, 57824], [57857, 132021],
   10100     [28801, 57944], [23708, 57959], [58017, 132547], [14128, 58028],
   10101     [58096, 136054], [58097, 150034], [58111, 166699], [58112, 155779],
   10102     [256, 62233], [193, 62234], [461, 62235], [192, 62236], [274, 62237],
   10103     [201, 62238], [282, 62239], [200, 62240], [332, 62241], [211, 62242],
   10104     [465, 62243], [210, 62244], 62245, [7870, 62246], 62247, [7872, 62248],
   10105     [202, 62249], [257, 62250], [225, 62251], [462, 62252], [224, 62253],
   10106     [593, 62254], [275, 62255], [233, 62256], [283, 62257], [232, 62258],
   10107     [299, 62259], [237, 62260], [464, 62261], [236, 62262], [333, 62263],
   10108     [243, 62264], [466, 62265], [242, 62266], [363, 62267], [250, 62268],
   10109     [468, 62269], [249, 62270], [470, 62271], [472, 62272], [474, 62273],
   10110     [476, 62274], [252, 62275], 62276, [7871, 62277], 62278, [7873, 62279],
   10111     [234, 62280], [609, 62281], [643, 63551], [592, 63552], [603, 63553],
   10112     [596, 63554], [629, 63555], [339, 63556], [248, 63557], [331, 63558],
   10113     [650, 63559], [618, 63560], {f: 2, c: 62282}, [11933, 63530],
   10114     [11974, 63539], [12003, 63547], 20539, 28158, [62841, 171123], 62842,
   10115     [15817, 62843], 34959, [62845, 147790], 28791, 23797, [19232, 62848],
   10116     [62849, 152013], [13657, 62850], [62851, 154928], 24866, [62853, 166450],
   10117     36775, 37366, 29073, 26393, 29626, [62859, 144001], [62860, 172295],
   10118     [15499, 62861], [62862, 137600], [19216, 62863], 30948, 29698, 20910,
   10119     [62867, 165647], [16393, 62868], 27235, [62870, 172730], [16931, 62871],
   10120     34319, 31274, [62875, 170311], [62876, 166634], 38741, 28749, 21284,
   10121     [62880, 139390], 37876, 30425, [62883, 166371], 62884, 30685, 20131, 20464,
   10122     20668, 20015, 20247, 62891, 21556, 32139, 22674, 22736, [62896, 138678],
   10123     24210, 24217, 24514, [62900, 141074], 25995, [62902, 144377], 26905, 27203,
   10124     [62905, 146531], 27903, 29184, [62909, 148741], 29580, [16091, 62911],
   10125     [62912, 150035], 23317, 29881, 35715, [62916, 154788], [62917, 153237],
   10126     31379, 31724, 31939, 32364, 33528, 34199, 62924, 34960, 62926, 36537,
   10127     62928, 36815, 34143, 39392, 37409, 62933, [62934, 167353], [62935, 136255],
   10128     [16497, 62936], [17058, 62937], 23066, 39016, 26475, [17014, 62944], 22333,
   10129     34262, [62948, 149883], 33471, [62950, 160013], [19585, 62951],
   10130     [62952, 159092], 23931, [62954, 158485], [62955, 159678], {f: 2, c: 62956},
   10131     23446, 62959, 32347],
   10132   'Adobe-GB1': [{f: 95, c: 32}, {f: 3, c: 12288}, [183, 12539], 713, 711, 168,
   10133     12291, 12293, 8212, 65374, 8214, [8230, 8943], {f: 2, c: 8216},
   10134     {f: 2, c: 8220}, {f: 2, c: 12308}, {f: 8, c: 12296}, {f: 2, c: 12310},
   10135     {f: 2, c: 12304}, 177, 215, 247, 8758, {f: 2, c: 8743}, 8721, 8719, 8746,
   10136     8745, 8712, 8759, 8730, 8869, 8741, 8736, 8978, 8857, 8747, 8750, 8801,
   10137     8780, 8776, 8765, 8733, 8800, {f: 2, c: 8814}, {f: 2, c: 8804}, 8734, 8757,
   10138     8756, 9794, 9792, 176, {f: 2, c: 8242}, 8451, 65284, 164, {f: 2, c: 65504},
   10139     8240, 167, 8470, 9734, 9733, 9675, 9679, 9678, 9671, 9670, 9633, 9632,
   10140     9651, 9650, 8251, 8594, {f: 2, c: 8592}, 8595, 12307, {f: 20, c: 9352},
   10141     {f: 20, c: 9332}, {f: 10, c: 9312}, {f: 10, c: 12832}, {f: 12, c: 8544},
   10142     {f: 3, c: 65281}, 65509, {f: 89, c: 65285}, 65507, {f: 83, c: 12353},
   10143     {f: 86, c: 12449}, {f: 17, c: 913}, {f: 7, c: 931}, {f: 17, c: 945},
   10144     {f: 7, c: 963}, {f: 7, c: 59277}, {f: 2, c: 65077}, {f: 2, c: 65081},
   10145     {f: 2, c: 65087}, {f: 2, c: 65085}, {f: 4, c: 65089}, {f: 2, c: 59284},
   10146     {f: 2, c: 65083}, {f: 2, c: 65079}, 65073, 59286, {f: 2, c: 65075},
   10147     {f: 6, c: 1040}, 1025, {f: 32, c: 1046}, 1105, {f: 26, c: 1078}, 257, 225,
   10148     462, 224, 275, 233, 283, 232, 299, 237, 464, 236, 333, 243, 466, 242, 363,
   10149     250, 468, 249, 470, 472, 474, 476, 252, 234, 593, 7743, 324, 328, 505, 609,
   10150     {f: 37, c: 12549}, 0, {f: 76, c: 9472}, {s: 126}, 21834, 38463, 22467,
   10151     25384, 21710, 21769, 21696, 30353, 30284, 34108, 30702, 33406, 30861,
   10152     29233, 38552, 38797, 27688, 23433, 20474, 25353, 26263, 23736, 33018,
   10153     26696, 32942, 26114, 30414, 20985, 25942, 29100, 32753, 34948, 20658,
   10154     22885, 25034, 28595, 33453, 25420, 25170, 21485, 21543, 31494,
   10155     [12043, 20843], 30116, 24052, 25300, 36299, 38774, 25226, 32793, 22365,
   10156     38712, 32610, 29240, [12137, 30333], 26575, 30334, 25670, 20336, 36133,
   10157     25308, 31255, 26001, 29677, 25644, 25203, 33324, 39041, 26495, 29256,
   10158     25198, 25292, 20276, 29923, 21322, 21150, 32458, 37030, 24110, 26758,
   10159     27036, 33152, 32465, 26834, 30917, 34444, 38225, 20621, 35876, 33502,
   10160     32990, 21253, 35090, 21093, 34180, 38649, 20445, 22561, 39281, 23453,
   10161     25265, 25253, 26292, 35961, 40077, 29190, 26479, 30865, 24754, 21329,
   10162     21271, 36744, 32972, 36125, 38049, 20493, 29384, 22791, 24811, 28953,
   10163     34987, 22868, 33519, 26412, 31528, 23849, 32503, 29997, 27893, 36454,
   10164     36856, 36924, [12240, 40763], [12112, 27604], 37145, 31508, 24444, 30887,
   10165     34006, 34109, 27605, 27609, 27606, 24065, 24199, 30201, 38381, 25949,
   10166     24330, 24517, 36767, 22721, 33218, 36991, 38491, 38829, 36793, 32534,
   10167     36140, 25153, 20415, 21464, 21342, {f: 2, c: 36776}, 36779, 36941, 26631,
   10168     24426, 33176, 34920, 40150, 24971, 21035, 30250, 24428, 25996, 28626,
   10169     28392, 23486, 25672, 20853, 20912, 26564, 19993, 31177, 39292, 28851,
   10170     30149, 24182, 29627, 33760, 25773, 25320, 38069, 27874, 21338, 21187,
   10171     25615, 38082, 31636, 20271, 24091, 33334, 33046, 33162, 28196, 27850,
   10172     39539, 25429, [12056, 21340], 21754, 34917, 22496, 19981, 24067, 27493,
   10173     31807, 37096, 24598, 25830, 29468, 35009, 26448, 25165, 36130, 30572,
   10174     36393, 37319, 24425, 33756, 34081, 39184, 21442, 34453, 27531, 24813,
   10175     24808, 28799, 33485, 33329, 20179, 27815, 34255, 25805, 31961, 27133,
   10176     26361, 33609, 21397, 31574, 20391, 20876, 27979, 23618, 36461, 25554,
   10177     21449, 33580, 33590, 26597, 30900, 25661, 23519, 23700, 24046, 35815,
   10178     25286, 26612, 35962, 25600, 25530, 34633, 39307, 35863, 32544, 38130,
   10179     20135, 38416, 39076, 26124, 29462, 22330, 23581, 24120, 38271, 20607,
   10180     32928, [12058, 21378], 25950, 30021, 21809, 20513, 36229, 25220, 38046,
   10181     26397, 22066, 28526, 24034, 21557, 28818, 36710, 25199, 25764, 25507,
   10182     24443, 28552, 37108, [12162, 33251], [12192, 36784], 23576, 26216, 24561,
   10183     27785, 38472, 36225, 34924, 25745, 31216, 22478, 27225, 25104, 21576,
   10184     20056, 31243, 24809, 28548, 35802, 25215, 36894, 39563, 31204, 21507,
   10185     30196, 25345, 21273, 27744, 36831, 24347, 39536, 32827, 40831, 20360,
   10186     23610, [12186, 36196], 32709, 26021, 28861, 20805, 20914, [12173, 34411],
   10187     23815, 23456, 25277, 37228, 30068, 36364, 31264, 24833, 31609, 20167,
   10188     32504, 30597, 19985, 33261, 21021, 20986, 27249, 21416, 36487, 38148,
   10189     38607, 28353, 38500, 26970, 30784, 20648, 30679, 25616, 35302, 22788,
   10190     25571, 24029, 31359, 26941, 20256, 33337, 21912, 20018, 30126, 31383,
   10191     24162, 24202, 38383, 21019, 21561, 28810, 25462, 38180, 22402, 26149,
   10192     26943, 37255, 21767, 28147, 32431, 34850, 25139, 32496, 30133, 33576,
   10193     30913, 38604, 36766, 24904, 29943, 35789, 27492, 21050, 36176, 27425,
   10194     32874, 33905, 22257, 21254, 20174, 19995, 20945, 31895, 37259, 31751,
   10195     20419, 36479, 31713, 31388, 25703, 23828, 20652, 33030, 30209, 31929,
   10196     28140, 32736, 26449, 23384, [12072, 23544], 30923, 25774, 25619, 25514,
   10197     25387, 38169, 25645, 36798, 31572, 30249, 25171, [12068, 22823], 21574,
   10198     [12109, 27513], 20643, 25140, 24102, 27526, 20195, 36151, 34955, 24453,
   10199     36910, 24608, 32829, 25285, 20025, 21333, 37112, 25528, 32966, 26086,
   10200     27694, 20294, 24814, 28129, 35806, 24377, 34507, 24403, 25377, 20826,
   10201     33633, 26723, [12049, 20992], 25443, 36424, 20498, 23707, 31095, 23548,
   10202     21040, 31291, 24764, 36947, 30423, 24503, 24471, 30340, 36460, 28783,
   10203     30331, 31561, 30634, 20979, 37011, 22564, 20302, 28404, 36842, 25932,
   10204     31515, 29380, 28068, 32735, 23265, 25269, 24213, 22320, 33922, 31532,
   10205     24093, 24351, 36882, 32532, 39072, 25474, 28359, 30872, 28857, 20856,
   10206     38747, 22443, 30005, 20291, 30008, 24215, 24806, 22880, 28096, 27583,
   10207     30857, 21500, 38613, 20939, 20993, 25481, 21514, 38035, 35843, 36300,
   10208     29241, 30879, 34678, 36845, 35853, 21472, 19969, 30447, 21486, 38025,
   10209     39030, [12237, 40718], 38189, 23450, 35746, 20002, 19996, 20908, 33891,
   10210     25026, 21160, 26635, 20375, 24683, 20923, 27934, 20828, 25238,
   10211     [12099, 26007], 38497, [12182, 35910], 36887, 30168, 37117, 30563, 27602,
   10212     29322, 29420, 35835, 22581, 30585, 36172, 26460, 38208, 32922, 24230,
   10213     28193, 22930, 31471, 30701, 38203, 27573, 26029, 32526, 22534, 20817,
   10214     38431, 23545, 22697, 21544, 36466, 25958, 39039, 22244, 38045, 30462,
   10215     36929, 25479, 21702, 22810, 22842, 22427, 36530, 26421, 36346, 33333,
   10216     21057, 24816, 22549, 34558, 23784, 40517, 20420, 39069, 35769, 23077,
   10217     24694, 21380, 25212, 36943, 37122, 39295, 24681, [12157, 32780],
   10218     [12041, 20799], [12159, 32819], 23572, 39285, 27953, [12038, 20108], 36144,
   10219     21457, 32602, 31567, 20240, 20047, 38400, 27861, 29648, 34281, 24070,
   10220     30058, 32763, 27146, 30718, 38034, 32321, 20961, 28902, 21453, 36820,
   10221     33539, 36137, 29359, 39277, 27867, 22346, 33459, [12101, 26041], 32938,
   10222     25151, 38450, 22952, 20223, 35775, 32442, 25918, 33778, [12206, 38750],
   10223     21857, 39134, 32933, 21290, 35837, 21536, 32954, 24223, 27832, 36153,
   10224     33452, 37210, 21545, 27675, 20998, 32439, 22367, 28954, 27774, 31881,
   10225     22859, 20221, 24575, 24868, 31914, 20016, 23553, 26539, 34562, 23792,
   10226     38155, 39118, 30127, 28925, 36898, 20911, 32541, 35773, 22857, 20964,
   10227     20315, 21542, 22827, 25975, 32932, 23413, 25206, 25282, 36752, 24133,
   10228     27679, 31526, 20239, 20440, 26381, 28014, 28074, 31119, 34993, 24343,
   10229     29995, 25242, 36741, 20463, 37340, 26023, 33071, 33105, 24220, 33104,
   10230     36212, 21103, 35206, 36171, 22797, 20613, 20184, [12201, 38428],
   10231     [12119, 29238], 33145, 36127, 23500, 35747, 38468, 22919, 32538, 21648,
   10232     22134, 22030, 35813, 25913, 27010, 38041, 30422, 28297, [12082, 24178],
   10233     [12130, 29976], 26438, 26577, 31487, 32925, 36214, 24863, 31174, 25954,
   10234     36195, 20872, 21018, 38050, 32568, 32923, 32434, 23703, 28207, 26464,
   10235     31705, 30347, [12220, 39640], 33167, 32660, 31957, 25630, 38224, 31295,
   10236     21578, 21733, 27468, 25601, [12093, 25096], 40509, 33011, 30105, 21106,
   10237     [12208, 38761], 33883, 26684, 34532, 38401, 38548, 38124, 20010, 21508,
   10238     32473, 26681, 36319, 32789, 26356, 24218, 32697, 22466, 32831, 26775,
   10239     [12079, 24037], 25915, 21151, 24685, 40858, 20379, 36524, 20844, 23467,
   10240     [12088, 24339], 24041, 27742, 25329, 36129, 20849, 38057, 21246, 27807,
   10241     33503, 29399, 22434, 26500, 36141, 22815, 36764, 33735, 21653, 31629,
   10242     20272, 27837, 23396, 22993, [12238, 40723], 21476, 34506, [12219, 39592],
   10243     [12181, 35895], 32929, 25925, 39038, 22266, 38599, 21038, [12128, 29916],
   10244     21072, 23521, 25346, 35074, 20054, 25296, 24618, 26874, 20851, 23448,
   10245     20896, 35266, 31649, 39302, 32592, 24815, 28748, 36143, 20809,
   10246     [12084, 24191], 36891, 29808, 35268, 22317, 30789, 24402, 40863, 38394,
   10247     36712, [12225, 39740], 35809, 30328, 26690, 26588, 36330, 36149, 21053,
   10248     36746, 28378, 26829, 38149, 37101, 22269, 26524, 35065, 36807, 21704,
   10249     39608, 23401, 28023, 27686, 20133, 23475, 39559, 37219, 25000, 37039,
   10250     38889, 21547, 28085, 23506, 20989, 21898, 32597, 32752, 25788, 25421,
   10251     26097, 25022, 24717, 28938, 27735, 27721, 22831, 26477, 33322, 22741,
   10252     22158, 35946, 27627, 37085, 22909, 32791, 21495, 28009, 21621, 21917,
   10253     33655, 33743, 26680, [12146, 31166], 21644, 20309, 21512, 30418, 35977,
   10254     38402, 27827, 28088, 36203, 35088, 40548, 36154, 22079, [12234, 40657],
   10255     30165, 24456, 29408, 24680, 21756, 20136, 27178, 34913, 24658, 36720,
   10256     21700, 28888, 34425, 40511, 27946, 23439, 24344, 32418, 21897, 20399,
   10257     29492, 21564, 21402, 20505, 21518, 21628, 20046, 24573, 29786, 22774,
   10258     33899, 32993, 34676, 29392, 31946, 28246, 24359, 34382, 21804, 25252,
   10259     20114, 27818, 25143, 33457, 21719, 21326, 29502, 28369, 30011, 21010,
   10260     21270, 35805, 27088, 24458, 24576, 28142, 22351, 27426, 29615, 26707,
   10261     36824, 32531, 25442, 24739, 21796, 30186, 35938, 28949, 28067, 23462,
   10262     24187, 33618, 24908, 40644, 30970, 34647, 31783, 30343, 20976, 24822,
   10263     29004, 26179, 24140, 24653, 35854, 28784, 25381, 36745, 24509, 24674,
   10264     34516, 22238, 27585, 24724, 24935, 21321, 24800, 26214, 36159, 31229,
   10265     20250, 28905, 27719, 35763, 35826, 32472, 33636, 26127, 23130, 39746,
   10266     27985, 28151, 35905, 27963, 20249, [12117, 28779], 33719, 25110, 24785,
   10267     38669, 36135, 31096, 20987, 22334, 22522, 26426, 30072, 31293, 31215,
   10268     31637, 32908, 39269, 36857, 28608, 35749, 40481, 23020, 32489, 32521,
   10269     21513, 26497, 26840, 36753, 31821, 38598, 21450, 24613, 30142, 27762,
   10270     21363, 23241, 32423, 25380, [12047, 20960], 33034, [12080, 24049], 34015,
   10271     25216, 20864, 23395, 20238, 31085, 21058, 24760, 27982, 23492, 23490,
   10272     35745, 35760, 26082, 24524, 38469, 22931, 32487, 32426, 22025, 26551,
   10273     22841, 20339, 23478, 21152, 33626, 39050, 36158, 30002, 38078, 20551,
   10274     31292, 20215, 26550, 39550, 23233, 27516, 30417, 22362, 23574, 31546,
   10275     38388, 29006, 20860, 32937, 33392, 22904, 32516, 33575, 26816, 26604,
   10276     30897, 30839, 25315, 25441, 31616, 20461, 21098, 20943, 33616, 27099,
   10277     37492, 36341, 36145, 35265, 38190, 31661, 20214, 20581, 33328, 21073,
   10278     39279, 28176, 28293, 28071, 24314, 20725, 23004, 23558, 27974, 27743,
   10279     30086, 33931, 26728, 22870, 35762, 21280, 37233, 38477, 34121, 26898,
   10280     30977, 28966, 33014, 20132, 37066, 27975, 39556, 23047, 22204, 25605,
   10281     38128, 30699, 20389, 33050, 29409, [12179, 35282], 39290, 32564, 32478,
   10282     21119, 25945, 37237, 36735, 36739, 21483, 31382, 25581, 25509, 30342,
   10283     31224, 34903, 38454, 25130, 21163, 33410, 26708, 26480, 25463, 30571,
   10284     31469, 27905, 32467, 35299, 22992, 25106, 34249, 33445, 30028, 20511,
   10285     20171, 30117, 35819, 23626, [12081, 24062], 31563, [12100, 26020],
   10286     [12198, 37329], 20170, 27941, 35167, 32039, 38182, 20165, 35880, 36827,
   10287     38771, 26187, 31105, 36817, 28908, 28024, 23613, 21170, 33606, 20834,
   10288     33550, 30555, 26230, 40120, 20140, 24778, 31934, 31923, 32463, 20117,
   10289     35686, 26223, 39048, 38745, 22659, 25964, 38236, 24452, 30153, 38742,
   10290     31455, 31454, 20928, 28847, 31384, 25578, 31350, 32416, 29590,
   10291     [12210, 38893], 20037, 28792, 20061, 37202, 21417, 25937, 26087,
   10292     [12165, 33276], 33285, 21646, 23601, 30106, 38816, 25304, 29401, 30141,
   10293     23621, 39545, 33738, 23616, 21632, 30697, 20030, 27822, 32858, 25298,
   10294     25454, 24040, 20855, 36317, 36382, 38191, 20465, 21477, 24807, 28844,
   10295     21095, 25424, 40515, 23071, 20518, 30519, 21367, 32482, 25733, 25899,
   10296     25225, 25496, 20500, 29237, 35273, 20915, 35776, 32477, 22343, 33740,
   10297     38055, 20891, 21531, 23803, 20426, 31459, 27994, 37089, 39567, 21888,
   10298     21654, 21345, 21679, 24320, 25577, 26999, 20975, 24936, 21002, 22570,
   10299     21208, 22350, 30733, 30475, 24247, 24951, 31968, 25179, 25239, 20130,
   10300     28821, 32771, 25335, 28900, 38752, 22391, 33499, 26607, 26869, 30933,
   10301     39063, 31185, 22771, 21683, 21487, 28212, 20811, 21051, 23458, 35838,
   10302     32943, 21827, 22438, 24691, 22353, 21549, 31354, 24656, 23380, 25511,
   10303     25248, [12061, 21475], 25187, 23495, 26543, 21741, 31391, 33510, 37239,
   10304     24211, 35044, 22840, 22446, 25358, 36328, 33007, 22359, 31607, 20393,
   10305     24555, 23485, 27454, 21281, 31568, 29378, 26694, 30719, 30518, 26103,
   10306     20917, 20111, 30420, 23743, 31397, 33909, 22862, 39745, 20608, 39304,
   10307     24871, 28291, 22372, 26118, 25414, 22256, 25324, 25193, 24275, 38420,
   10308     22403, 25289, 21895, 34593, 33098, 36771, 21862, 33713, 26469, 36182,
   10309     34013, 23146, 26639, 25318, 31726, 38417, 20848, 28572, 35888, 25597,
   10310     35272, 25042, 32518, 28866, 28389, 29701, 27028, 29436, 24266, 37070,
   10311     26391, 28010, 25438, 21171, 29282, [12156, 32769], 20332, 23013, 37226,
   10312     28889, 28061, 21202, 20048, 38647, 38253, 34174, 30922, 32047, 20769,
   10313     22418, 25794, 32907, 31867, 27882, 26865, 26974, 20919, 21400, 26792,
   10314     29313, 40654, 31729, 29432, 31163, 28435, 29702, 26446, [12197, 37324],
   10315     40100, 31036, 33673, 33620, 21519, 26647, 20029, 21385, 21169, 30782,
   10316     21382, 21033, 20616, 20363, 20432, 30178, [12148, 31435], 31890, 27813,
   10317     [12202, 38582], [12050, 21147], 29827, 21737, 20457, 32852, 33714, 36830,
   10318     38256, 24265, 24604, 28063, 24088, 25947, 33080, 38142, 24651, 28860,
   10319     32451, 31918, 20937, 26753, 31921, 33391, 20004, 36742, 37327, 26238,
   10320     20142, 35845, 25769, 32842, 20698, 30103, 29134, 23525, 36797, 28518,
   10321     20102, 25730, 38243, 24278, 26009, 21015, 35010, 28872, 21155, 29454,
   10322     29747, 26519, 30967, 38678, 20020, 37051, 40158, 28107, 20955, 36161,
   10323     21533, 25294, 29618, 33777, 38646, 40836, 38083, 20278, 32666, 20940,
   10324     28789, 38517, 23725, 39046, 21478, 20196, 28316, 29705, 27060, 30827,
   10325     39311, 30041, 21016, 30244, 27969, 26611, 20845, 40857, 32843, 21657,
   10326     31548, 31423, 38534, 22404, 25314, 38471, 27004, 23044, 25602, 31699,
   10327     28431, 38475, 33446, 21346, 39045, 24208, 28809, 25523, 21348, 34383,
   10328     40065, 40595, 30860, 38706, 36335, 36162, [12229, 40575], 28510, 31108,
   10329     24405, 38470, 25134, 39540, 21525, 38109, 20387, 26053, 23653, 23649,
   10330     32533, 34385, 27695, 24459, 29575, 28388, 32511, 23782, 25371, 23402,
   10331     28390, 21365, 20081, 25504, 30053, 25249, 36718, 20262, 20177, 27814,
   10332     32438, 35770, 33821, 34746, 32599, 36923, 38179, 31657, 39585, 35064,
   10333     33853, 27931, 39558, 32476, 22920, [12231, 40635], 29595, 30721, 34434,
   10334     39532, 39554, 22043, 21527, 22475, 20080, 40614, 21334, 36808, 33033,
   10335     30610, 39314, 34542, 28385, 34067, 26364, 24930, 28459, 35881, 33426,
   10336     33579, 30450, 27667, 24537, 33725, 29483, 33541, 38170, [12113, 27611],
   10337     [12141, 30683], 38086, 21359, 33538, 20882, 24125, 35980, 36152, 20040,
   10338     29611, 26522, 26757, 37238, 38665, 29028, 27809, 30473, 23186, 38209,
   10339     27599, 32654, 26151, 23504, 22969, 23194, 38376, 38391, 20204, 33804,
   10340     33945, 27308, 30431, 38192, 29467, 26790, 23391, 30511, 37274, 38753,
   10341     31964, 36855, 35868, 24357, [12150, 31859], 31192, 35269, 27852, 34588,
   10342     23494, 24130, 26825, 30496, 32501, 20885, 20813, 21193, 23081, 32517,
   10343     [12207, 38754], 33495, 25551, 30596, 34256, 31186, 28218, 24217, 22937,
   10344     34065, 28781, 27665, 25279, [12139, 30399], 25935, 24751, 38397, 26126,
   10345     34719, 40483, 38125, 21517, 21629, 35884, {f: 2, c: 25720}, 34321, 27169,
   10346     33180, 30952, 25705, 39764, 25273, 26411, 33707, 22696, 40664, 27819,
   10347     28448, 23518, 38476, 35851, 29279, 26576, 25287, 29281, 20137, 22982,
   10348     27597, 22675, 26286, 24149, 21215, 24917, [12106, 26408], [12140, 30446],
   10349     30566, 29287, 31302, 25343, 21738, 21584, 38048, 37027, 23068, 32435,
   10350     27670, 20035, 22902, 32784, 22856, 21335, 30007, 38590, 22218, 25376,
   10351     33041, 24700, 38393, 28118, 21602, 39297, 20869, 23273, 33021, 22958,
   10352     38675, 20522, 27877, 23612, 25311, 20320, 21311, 33147, 36870, 28346,
   10353     34091, 25288, 24180, 30910, 25781, 25467, 24565, 23064, 37247, 40479,
   10354     23615, 25423, 32834, 23421, 21870, 38218, 38221, 28037, 24744, 26592,
   10355     29406, 20957, 23425, 25319, 27870, [12124, 29275], 25197, 38062, 32445,
   10356     33043, 27987, 20892, 24324, 22900, 21162, 24594, [12069, 22899], 26262,
   10357     34384, 30111, 25386, 25062, 31983, 35834, 21734, 27431, 40485, 27572,
   10358     34261, 21589, 20598, 27812, 21866, 36276, 29228, 24085, 24597, 29750,
   10359     25293, 25490, 29260, 24472, 28227, 27966, 25856, 28504, 30424, 30928,
   10360     30460, 30036, 21028, 21467, 20051, 24222, 26049, 32810, 32982, 25243,
   10361     21638, 21032, 28846, 34957, 36305, 27873, 21624, 32986, 22521, 35060,
   10362     36180, 38506, 37197, 20329, 27803, 21943, 30406, 30768, 25256, 28921,
   10363     28558, 24429, 34028, 26842, 30844, 31735, 33192, 26379, 40527, 25447,
   10364     30896, 22383, 30738, 38713, 25209, 25259, 21128, 29749, 27607, 21860,
   10365     33086, 30130, [12138, 30382], 21305, 30174, 20731, 23617, 35692, 31687,
   10366     20559, [12122, 29255], 39575, 39128, 28418, 29922, 31080, 25735, 30629,
   10367     25340, 39057, 36139, 21697, 32856, 20050, 22378, 33529, 33805, 24179,
   10368     20973, 29942, 35780, 23631, 22369, 27900, 39047, 23110, 30772, 39748,
   10369     36843, 31893, 21078, 25169, 38138, 20166, 33670, 33889, 33769, 33970,
   10370     22484, 26420, 22275, 26222, 28006, 35889, 26333, 28689, 26399, 27450,
   10371     26646, 25114, 22971, 19971, 20932, 28422, 26578, 27791, 20854, 26827,
   10372     22855, 27495, 30054, 23822, 33040, 40784, 26071, 31048, 31041, 39569,
   10373     36215, 23682, 20062, 20225, 21551, 22865, 30732, 22120, [12115, 27668],
   10374     36804, 24323, 27773, 27875, 35755, 25488, 24688, 27965, 29301, 25190,
   10375     38030, 38085, 21315, 36801, 31614, 20191, 35878, 20094, 40660, 38065,
   10376     38067, 21069, 28508, 36963, 27973, 35892, 22545, 23884, [12107, 27424],
   10377     27465, 26538, 21595, 33108, 32652, 22681, 34103, 24378, 25250, 27207,
   10378     38201, 25970, 24708, 26725, 30631, 20052, 20392, 24039, 38808, 25772,
   10379     32728, 23789, 20431, 31373, 20999, 33540, 19988, 24623, 31363, 38054,
   10380     20405, 20146, 31206, 29748, 21220, 33465, 25810, 31165, 23517, 27777,
   10381     38738, 36731, 27682, 20542, 21375, 28165, 25806, 26228, 27696, 24773,
   10382     39031, 35831, 24198, 29756, 31351, 31179, 19992, 37041, 29699, 27714,
   10383     22234, 37195, 27845, 36235, 21306, 34502, 26354, 36527, 23624, 39537,
   10384     28192, 21462, 23094, 40843, 36259, 21435, 22280, 39079, 26435, 37275,
   10385     27849, 20840, 30154, 25331, [12125, 29356], 21048, 21149, 32570, 28820,
   10386     30264, 21364, 40522, 27063, 30830, 38592, 35033, 32676, 28982, 29123,
   10387     20873, 26579, 29924, 22756, 25880, 22199, 35753, 39286, 25200, 32469,
   10388     24825, 28909, 22764, 20161, [12040, 20154], 24525, 38887, 20219, 35748,
   10389     20995, 22922, 32427, 25172, 20173, [12103, 26085], 25102, 33592, 33993,
   10390     33635, 34701, 29076, 28342, 23481, 32466, 20887, 25545, 26580,
   10391     [12161, 32905], 33593, 34837, 20754, 23418, 22914, 36785, 20083, 27741,
   10392     [12042, 20837], 35109, 36719, 38446, 34122, 29790, 38160, 38384, 28070,
   10393     33509, 24369, 25746, 27922, 33832, 33134, 40131, 22622, 36187, 19977,
   10394     21441, 20254, 25955, 26705, 21971, 20007, 25620, 39578, 25195, 23234,
   10395     29791, [12170, 33394], 28073, 26862, 20711, 33678, 30722, 26432, 21049,
   10396     27801, 32433, 20667, 21861, 29022, 31579, 26194, 29642, 33515, 26441,
   10397     [12077, 23665], 21024, 29053, 34923, 38378, 38485, 25797, 36193, 33203,
   10398     21892, 27733, 25159, 32558, 22674, 20260, 21830, 36175, 26188, 19978,
   10399     23578, 35059, 26786, 25422, 31245, 28903, 33421, 21242, 38902, 23569,
   10400     21736, 37045, 32461, 22882, 36170, 34503, [12166, 33292], 33293, 36198,
   10401     25668, 23556, 24913, 28041, 31038, 35774, 30775, 30003, 21627, 20280,
   10402     [12189, 36523], 28145, 23072, 32453, 31070, 27784, 23457, 23158, 29978,
   10403     32958, 24910, 28183, 22768, [12131, 29983], 29989, 29298, 21319, 32499,
   10404     30465, 30427, 21097, 32988, 22307, 24072, 22833, 29422, 26045, 28287,
   10405     35799, [12075, 23608], 34417, [12055, 21313], [12143, 30707], 25342, 26102,
   10406     20160, [12215, 39135], 34432, 23454, 35782, 21490, [12142, 30690], 20351,
   10407     23630, 39542, 22987, 24335, [12144, 31034], [12064, 22763], 19990, 26623,
   10408     20107, 25325, 35475, 36893, 21183, 26159, 21980, 22124, 36866, 20181,
   10409     20365, 37322, 39280, [12114, 27663], 24066, 24643, 23460, 35270, 35797,
   10410     25910, [12095, 25163], [12216, 39318], 23432, 23551, 25480, 21806, 21463,
   10411     30246, 20861, 34092, 26530, 26803, 27530, 25234, 36755, 21460, 33298,
   10412     28113, 30095, 20070, 36174, 23408, 29087, 34223, 26257, 26329, 32626,
   10413     34560, [12233, 40653], [12239, 40736], 23646, 26415, 36848, 26641, 26463,
   10414     25101, 31446, 22661, 24246, 25968, 28465, 24661, 21047, 32781, 25684,
   10415     34928, 29993, 24069, 26643, 25332, 38684, 21452, 29245, 35841,
   10416     [12116, 27700], 30561, 31246, 21550, 30636, 39034, 33308, 35828, 30805,
   10417     26388, 28865, 26031, 25749, 22070, 24605, 31169, 21496, 19997, 27515,
   10418     32902, 23546, 21987, 22235, 20282, 20284, 39282, 24051, 26494, 32824,
   10419     24578, 39042, 36865, 23435, 35772, 35829, 25628, 33368, 25822, 22013,
   10420     33487, 37221, 20439, 32032, 36895, 31903, 20723, 22609, 28335, 23487,
   10421     35785, 32899, 37240, 33948, 31639, 34429, 38539, 38543, 32485, 39635,
   10422     30862, 23681, 31319, 36930, 38567, 31071, 23385, 25439, 31499, 34001,
   10423     26797, 21766, 32553, 29712, 32034, 38145, 25152, 22604, 20182, 23427,
   10424     22905, 22612, 29549, 25374, 36427, 36367, 32974, 33492, 25260, 21488,
   10425     27888, 37214, 22826, 24577, 27760, 22349, 25674, 36138, 30251, 28393,
   10426     22363, 27264, 30192, 28525, 35885, 35848, 22374, 27631, 34962, 30899,
   10427     25506, 21497, 28845, 27748, 22616, 25642, 22530, 26848, 33179, 21776,
   10428     31958, 20504, 36538, 28108, 36255, 28907, 25487, 28059, 28372, 32486,
   10429     33796, 26691, 36867, 28120, 38518, 35752, 22871, 29305, 34276, 33150,
   10430     30140, 35466, 26799, 21076, 36386, 38161, 25552, 39064, 36420, 21884,
   10431     20307, 26367, 22159, 24789, 28053, 21059, 23625, 22825, 28155, 22635,
   10432     [12133, 30000], 29980, 24684, 33300, 33094, 25361, 26465, 36834, 30522,
   10433     36339, 36148, 38081, 24086, 21381, 21548, 28867, 27712, 24311, 20572,
   10434     20141, 24237, 25402, 33351, 36890, 26704, 37230, 30643, 21516, 38108,
   10435     24420, 31461, 26742, 25413, 31570, 32479, 30171, 20599, 25237, 22836,
   10436     36879, 20984, 31171, 31361, 22270, 24466, 36884, 28034, 23648,
   10437     [12063, 22303], 21520, 20820, 28237, 22242, 25512, 39059, 33151, 34581,
   10438     35114, 36864, 21534, 23663, 33216, 25302, 25176, 33073, 40501, 38464,
   10439     39534, 39548, 26925, 22949, 25299, 21822, 25366, 21703, 34521, 27964,
   10440     23043, [12129, 29926], 34972, 27498, 22806, 35916, 24367, 28286, 29609,
   10441     39037, 20024, 28919, 23436, 30871, 25405, 26202, 30358, 24779, 23451,
   10442     23113, 19975, 33109, 27754, 29579, 20129, 26505, [12153, 32593], 24448,
   10443     26106, 26395, 24536, 22916, 23041, 24013, 24494, 21361, 38886, 36829,
   10444     26693, 22260, 21807, 24799, 20026, 28493, 32500, 33479, 33806, 22996,
   10445     20255, 20266, 23614, 32428, 26410, 34074, 21619, 30031, 32963, 21890,
   10446     39759, 20301, 28205, 35859, 23561, 24944, 21355, 30239, 28201, 34442,
   10447     [12098, 25991], 38395, 32441, 21563, 31283, 32010, 38382, 21985, 32705,
   10448     29934, 25373, 34583, 28065, 31389, 25105, 26017, 21351, 25569, 27779,
   10449     24043, 21596, 38056, 20044, 27745, 35820, 23627, [12102, 26080], 33436,
   10450     26791, 21566, 21556, [12111, 27595], 27494, 20116, 25410, 21320, 33310,
   10451     20237, 20398, 22366, 25098, 38654, 26212, 29289, 21247, 21153, 24735,
   10452     35823, 26132, 29081, 26512, 35199, 30802, 30717, 26224, 22075, 21560,
   10453     38177, 29306, 31232, 24687, 24076, 24713, 33181, [12067, 22805], 24796,
   10454     29060, 28911, 28330, 27728, 29312, 27268, 34989, 24109, 20064, 23219,
   10455     21916, 38115, 27927, 31995, 38553, 25103, 32454, 30606, 34430, 21283,
   10456     38686, 36758, 26247, 23777, 20384, 29421, 19979, 21414, 22799, 21523,
   10457     25472, 38184, 20808, 20185, 40092, 32420, 21688, 36132, 34900, 33335,
   10458     38386, 28046, 24358, 23244, 26174, 38505, 29616, 29486, 21439, 33146,
   10459     39301, 32673, 23466, 38519, 38480, 32447, 30456, 21410, 38262,
   10460     [12217, 39321], 31665, 35140, 28248, 20065, 32724, 31077, 35814, 24819,
   10461     21709, 20139, 39033, 24055, 27233, 20687, 21521, 35937, 33831, 30813,
   10462     38660, 21066, 21742, 22179, 38144, 28040, 23477, 28102, 26195,
   10463     [12073, 23567], 23389, 26657, 32918, 21880, 31505, 25928, 26964, 20123,
   10464     27463, 34638, 38795, 21327, 25375, 25658, 37034, 26012, 32961, 35856,
   10465     20889, 26800, 21368, 34809, 25032, 27844, 27899, 35874, 23633, 34218,
   10466     33455, 38156, 27427, [12191, 36763], 26032, 24571, [12092, 24515], 20449,
   10467     34885, 26143, 33125, 29481, 24826, 20852, 21009, 22411, 24418, 37026,
   10468     [12175, 34892], 37266, 24184, 26447, 24615, 22995, 20804, 20982, 33016,
   10469     21256, 27769, 38596, 29066, 20241, 20462, 32670, 26429, 21957, 38152,
   10470     31168, 34966, 32483, 22687, 25100, 38656, 34394, 22040, 39035, 24464,
   10471     35768, 33988, 37207, 21465, 26093, 24207, 30044, 24676, 32110, 23167,
   10472     32490, 32493, 36713, 21927, 23459, 24748, 26059, [12126, 29572], 36873,
   10473     30307, 30505, 32474, 38772, 34203, 23398, [12147, 31348], 38634,
   10474     [12174, 34880], 21195, 29071, 24490, 26092, 35810, 23547, 39535, 24033,
   10475     27529, 27739, 35757, 35759, 36874, 36805, 21387, 25276, 40486, 40493,
   10476     21568, 20011, 33469, [12123, 29273], 34460, 23830, 34905, 28079, 38597,
   10477     21713, 20122, 35766, 28937, 21693, 38409, 28895, 28153, 30416, 20005,
   10478     30740, 34578, 23721, 24310, [12180, 35328], 39068, 38414, 28814, 27839,
   10479     22852, 25513, 30524, 34893, 28436, 33395, 22576, 29141, 21388, 30746,
   10480     38593, 21761, 24422, 28976, 23476, 35866, 39564, 27523, 22830, 40495,
   10481     31207, 26472, 25196, 20335, 30113, [12154, 32650], 27915, 38451, 27687,
   10482     20208, 30162, 20859, 26679, 28478, 36992, 33136, 22934, 29814, 25671,
   10483     23591, 36965, 31377, 35875, 23002, 21676, 33280, 33647, 35201, 32768,
   10484     26928, 22094, 32822, 29239, 37326, 20918, 20063, 39029, 25494, 19994,
   10485     21494, 26355, 33099, 22812, 28082, [12032, 19968], 22777, 21307, 25558,
   10486     38129, 20381, 20234, [12176, 34915], 39056, 22839, 36951, 31227, 20202,
   10487     33008, 30097, 27778, 23452, 23016, 24413, 26885, 34433, 20506, 24050,
   10488     [12036, 20057], 30691, 20197, 33402, 25233, 26131, [12194, 37009], 23673,
   10489     20159, 24441, 33222, 36920, 32900, 30123, 20134, 35028, 24847, 27589,
   10490     24518, 20041, 30410, 28322, 35811, 35758, 35850, 35793, 24322, 32764,
   10491     32716, 32462, 33589, 33643, 22240, 27575, [12211, 38899], 38452, 23035,
   10492     21535, 38134, 28139, 23493, 39278, 23609, 24341, 38544, 21360, 33521,
   10493     27185, 23156, 40560, 24212, 32552, 33721, {f: 2, c: 33828}, 33639, 34631,
   10494     36814, 36194, 30408, 24433, 39062, 30828, 26144, 21727, 25317, 20323,
   10495     33219, 30152, 24248, 38605, 36362, 34553, 21647, 27891, 28044, 27704,
   10496     24703, 21191, [12132, 29992], 24189, 20248, 24736, 24551, 23588, 30001,
   10497     37038, 38080, 29369, 27833, 28216, [12195, 37193], 26377, 21451, 21491,
   10498     20305, 37321, 35825, [12060, 21448], 24188, 36802, 28132, 20110, 30402,
   10499     27014, 34398, 24858, 33286, 20313, 20446, 36926, 40060, 24841, 28189,
   10500     28180, 38533, 20104, 23089, [12204, 38632], 19982, 23679, 31161, 23431,
   10501     35821, [12155, 32701], [12127, 29577], 22495, 33419, 37057, 21505, 36935,
   10502     21947, 23786, 24481, 24840, 27442, 29425, 32946, 35465, 28020, 23507,
   10503     35029, 39044, 35947, 39533, 40499, 28170, 20900, 20803, 22435, 34945,
   10504     21407, 25588, 36757, 22253, 21592, 22278, 29503, 28304, 32536, 36828,
   10505     33489, 24895, 24616, 38498, [12104, 26352], 32422, 36234, 36291, 38053,
   10506     23731, 31908, [12105, 26376], 24742, 38405, 32792, 20113, 37095, 21248,
   10507     38504, 20801, 36816, 34164, 37213, 26197, 38901, 23381, 21277, 30776,
   10508     26434, 26685, 21705, 28798, 23472, 36733, 20877, 22312, 21681, 25874,
   10509     26242, 36190, 36163, 33039, 33900, 36973, 31967, 20991, 34299, 26531,
   10510     26089, 28577, 34468, 36481, 22122, 36896, 30338, 28790, 29157, 36131,
   10511     25321, 21017, 27901, 36156, 24590, 22686, 24974, 26366, 36192, 25166,
   10512     21939, 28195, 26413, 36711, 38113, 38392, 30504, 26629, 27048, 21643,
   10513     20045, 28856, 35784, 25688, 25995, 23429, 31364, 20538, 23528, 30651,
   10514     27617, 35449, 31896, 27838, 30415, 26025, 36759, 23853, 23637, 34360,
   10515     26632, 21344, 25112, 31449, 28251, 32509, 27167, 31456, 24432, 28467,
   10516     24352, 25484, 28072, 26454, 19976, 24080, 36134, 20183, 32960, 30260,
   10517     38556, 25307, 26157, 25214, 27836, 36213, 29031, 32617, 20806, 32903,
   10518     21484, 36974, 25240, 21746, 34544, 36761, 32773, 38167, 34071, 36825,
   10519     27993, 29645, 26015, 30495, 29956, 30759, 33275, 36126, 38024, 20390,
   10520     26517, 30137, 35786, 38663, 25391, 38215, 38453, 33976, 25379, 30529,
   10521     24449, 29424, 20105, 24596, 25972, 25327, 27491, 25919, 24103, 30151,
   10522     37073, 35777, 33437, 26525, [12096, 25903], 21553, 34584, 30693, 32930,
   10523     33026, 27713, 20043, 32455, 32844, 30452, 26893, 27542, 25191, 20540,
   10524     20356, 22336, 25351, [12108, 27490], 36286, 21482, 26088, 32440, 24535,
   10525     25370, 25527, [12164, 33267], 33268, 32622, 24092, 23769, 21046, 26234,
   10526     31209, 31258, 36136, 28825, 30164, 28382, 27835, 31378, 20013, 30405,
   10527     24544, 38047, 34935, 32456, 31181, 32959, 37325, 20210, 20247,
   10528     [12168, 33311], 21608, 24030, 27954, 35788, 31909, 36724, 32920, 24090,
   10529     21650, 30385, 23449, 26172, 39588, 29664, 26666, 34523, 26417, 29482,
   10530     35832, 35803, 36880, [12149, 31481], 28891, 29038, 25284, 30633, 22065,
   10531     20027, 33879, 26609, 21161, 34496, 36142, 38136, 31569, 20303, 27880,
   10532     31069, 39547, 25235, [12118, 29226], 25341, 19987, 30742, 36716, 25776,
   10533     36186, 31686, 26729, 24196, 35013, 22918, 25758, 22766, 29366, 26894,
   10534     38181, 36861, 36184, 22368, 32512, 35846, 20934, 25417, 25305, 21331,
   10535     26700, 29730, 33537, 37196, 21828, 30528, 28796, 27978, 20857, 21672,
   10536     36164, 23039, 28363, 28100, 23388, 32043, 20180, 31869, 28371,
   10537     [12070, 23376], [12163, 33258], 28173, 23383, 39683, 26837, 36394, 23447,
   10538     32508, 24635, 32437, 37049, [12187, 36208], 22863, 25549, 31199,
   10539     [12188, 36275], 21330, 26063, 31062, 35781, 38459, 32452, 38075, 32386,
   10540     22068, 37257, 26368, 32618, 23562, 36981, 26152, 24038, 20304, 26590,
   10541     20570, 20316, 22352, 24231, 20109, 19980, 20800, 19984, 24319, 21317,
   10542     19989, 20120, 19998, [12224, 39730], 23404, 22121, [12033, 20008], 31162,
   10543     [12035, 20031], [12052, 21269], 20039, 22829, [12120, 29243], 21358, 27664,
   10544     22239, 32996, 39319, 27603, 30590, 40727, [12034, 20022], 20127, 40720,
   10545     20060, 20073, 20115, 33416, 23387, 21868, 22031, 20164, 21389, 21405,
   10546     21411, 21413, 21422, 38757, 36189, [12053, 21274], 21493, 21286, 21294,
   10547     21310, 36188, 21350, 21347, 20994, 21000, 21006, 21037, 21043,
   10548     {f: 2, c: 21055}, 21068, 21086, 21089, 21084, 33967, 21117, 21122, 21121,
   10549     21136, 21139, [12044, 20866], 32596, 20155, 20163, 20169, 20162, 20200,
   10550     20193, 20203, 20190, 20251, 20211, 20258, 20324, 20213, 20261, 20263,
   10551     20233, 20267, 20318, 20327, 25912, 20314, 20317, 20319, 20311, 20274,
   10552     20285, 20342, 20340, 20369, 20361, 20355, 20367, 20350, 20347, 20394,
   10553     20348, 20396, 20372, 20454, 20456, 20458, 20421, 20442, 20451, 20444,
   10554     20433, 20447, 20472, 20521, 20556, 20467, 20524, 20495, 20526, 20525,
   10555     20478, 20508, 20492, 20517, 20520, 20606, 20547, 20565, 20552, 20558,
   10556     20588, 20603, 20645, 20647, 20649, 20666, 20694, 20742, 20717, 20716,
   10557     20710, 20718, 20743, 20747, 20189, 27709, 20312, 20325, 20430,
   10558     [12245, 40864], 27718, 31860, 20846, 24061, 40649, 39320, 20865, 22804,
   10559     [12051, 21241], 21261, 35335, 21264, 20971, 22809, 20821, [12039, 20128],
   10560     20822, 20147, 34926, 34980, 20149, 33044, 35026, 31104, 23348, 34819,
   10561     32696, [12046, 20907], 20913, 20925, 20924, 20935, [12045, 20886], 20898,
   10562     20901, 35744, {f: 2, c: 35750}, 35754, {f: 2, c: 35764}, 35767,
   10563     {f: 2, c: 35778}, 35787, 35791, 35790, {f: 3, c: 35794}, 35798,
   10564     {f: 2, c: 35800}, 35804, {f: 2, c: 35807}, 35812, {f: 2, c: 35816}, 35822,
   10565     35824, 35827, 35830, 35833, 35836, {f: 2, c: 35839}, 35842, 35844, 35847,
   10566     35852, 35855, {f: 2, c: 35857}, {f: 3, c: 35860}, 35865, 35867, 35864,
   10567     35869, {f: 3, c: 35871}, 35877, 35879, {f: 2, c: 35882}, {f: 2, c: 35886},
   10568     {f: 2, c: 35890}, {f: 2, c: 35893}, [12057, 21353], 21370, 38429, 38434,
   10569     38433, 38449, 38442, 38461, 38460, 38466, 38473, 38484, 38495, 38503,
   10570     38508, 38514, 38516, 38536, 38541, 38551, 38576, 37015, 37019, 37021,
   10571     37017, 37036, 37025, 37044, 37043, 37046, 37050, 37048, 37040, 37071,
   10572     37061, 37054, 37072, 37060, 37063, 37075, 37094, 37090, 37084, 37079,
   10573     37083, 37099, 37103, 37118, 37124, 37154, 37150, 37155, 37169, 37167,
   10574     37177, 37187, 37190, 21005, 22850, 21154, {f: 2, c: 21164}, 21182, 21759,
   10575     21200, 21206, 21232, 21471, 29166, 30669, [12085, 24308], [12048, 20981],
   10576     20988, [12223, 39727], [12059, 21430], 24321, 30042, 24047, 22348, 22441,
   10577     22433, 22654, 22716, 22725, 22737, 22313, 22316, 22314, 22323, 22329,
   10578     {f: 2, c: 22318}, 22364, 22331, 22338, 22377, 22405, 22379, 22406, 22396,
   10579     22395, 22376, 22381, 22390, 22387, 22445, 22436, 22412, 22450, 22479,
   10580     22439, 22452, 22419, 22432, 22485, 22488, 22490, 22489, 22482, 22456,
   10581     22516, 22511, 22520, 22500, 22493, 22539, 22541, 22525, 22509, 22528,
   10582     22558, 22553, 22596, 22560, 22629, 22636, 22657, 22665, 22682, 22656,
   10583     39336, 40729, 25087, 33401, 33405, 33407, 33423, 33418, 33448, 33412,
   10584     33422, 33425, 33431, 33433, 33451, 33464, 33470, 33456, 33480, 33482,
   10585     33507, 33432, 33463, 33454, {f: 2, c: 33483}, 33473, 33449, 33460, 33441,
   10586     33450, 33439, 33476, 33486, 33444, 33505, 33545, 33527, 33508, 33551,
   10587     33543, 33500, 33524, 33490, 33496, 33548, 33531, 33491, 33553, 33562,
   10588     33542, {f: 2, c: 33556}, 33504, 33493, 33564, 33617, {f: 2, c: 33627},
   10589     33544, 33682, 33596, 33588, 33585, 33691, 33630, 33583, 33615, 33607,
   10590     33603, 33631, 33600, 33559, 33632, 33581, 33594, 33587, 33638, 33637,
   10591     33640, 33563, 33641, 33644, 33642, {f: 2, c: 33645}, 33712, 33656,
   10592     {f: 2, c: 33715}, 33696, 33706, 33683, 33692, 33669, 33660, 33718, 33705,
   10593     33661, 33720, 33659, 33688, 33694, 33704, 33722, 33724, 33729, 33793,
   10594     33765, 33752, 22535, 33816, 33803, 33757, 33789, 33750, 33820, 33848,
   10595     33809, 33798, 33748, 33759, 33807, 33795, {f: 2, c: 33784}, 33770, 33733,
   10596     33728, 33830, 33776, 33761, 33884, 33873, 33882, 33881, 33907,
   10597     {f: 2, c: 33927}, 33914, 33929, 33912, 33852, 33862, 33897, 33910, 33932,
   10598     33934, 33841, 33901, 33985, 33997, 34000, 34022, 33981, 34003, 33994,
   10599     33983, 33978, 34016, 33953, 33977, 33972, 33943, 34021, 34019, 34060,
   10600     29965, 34104, 34032, 34105, 34079, 34106, 34134, 34107, 34047, 34044,
   10601     34137, 34120, 34152, 34148, 34142, 34170, 30626, 34115, 34162, 34171,
   10602     34212, 34216, 34183, 34191, 34169, 34222, 34204, 34181, 34233, 34231,
   10603     34224, 34259, 34241, 34268, 34303, 34343, 34309, 34345, 34326, 34364,
   10604     [12086, 24318], 24328, 22844, 22849, 32823, 22869, 22874, 22872, 21263,
   10605     [12074, 23586], 23589, 23596, 23604, 25164, 25194, 25247, 25275, 25290,
   10606     25306, 25303, 25326, 25378, 25334, 25401, 25419, 25411, 25517, 25590,
   10607     25457, 25466, 25486, 25524, 25453, 25516, 25482, 25449, 25518, 25532,
   10608     25586, 25592, 25568, 25599, 25540, 25566, 25550, 25682, 25542, 25534,
   10609     25669, 25665, 25611, 25627, 25632, 25612, 25638, 25633, 25694, 25732,
   10610     25709, 25750, 25722, {f: 2, c: 25783}, 25753, 25786, 25792, 25808, 25815,
   10611     25828, 25826, 25865, 25893, 25902, [12087, 24331], 24530, 29977, 24337,
   10612     21343, 21489, 21501, 21481, 21480, 21499, 21522, 21526, 21510, 21579,
   10613     {f: 3, c: 21586}, 21590, 21571, 21537, 21591, 21593, 21539, 21554, 21634,
   10614     21652, 21623, 21617, 21604, {f: 2, c: 21658}, 21636, 21622, 21606, 21661,
   10615     21712, 21677, 21698, 21684, 21714, 21671, 21670, {f: 2, c: 21715}, 21618,
   10616     21667, 21717, 21691, 21695, 21708, {f: 2, c: 21721}, 21724,
   10617     {f: 2, c: 21673}, 21668, 21725, 21711, 21726, 21787, 21735, 21792, 21757,
   10618     21780, 21747, {f: 2, c: 21794}, 21775, 21777, 21799, 21802, 21863, 21903,
   10619     21941, 21833, 21869, 21825, 21845, 21823, 21840, 21820, 21815, 21846,
   10620     {f: 3, c: 21877}, 21811, 21808, 21852, 21899, 21970, 21891, 21937, 21945,
   10621     21896, 21889, 21919, 21886, 21974, 21905, 21883, 21983, {f: 2, c: 21949},
   10622     21908, 21913, 21994, 22007, 21961, 22047, 21969, {f: 2, c: 21995}, 21972,
   10623     21990, 21981, 21956, 21999, 21989, {f: 2, c: 22002}, {f: 2, c: 21964},
   10624     21992, 22005, 21988, 36756, 22046, 22024, 22028, 22017, 22052, 22051,
   10625     22014, 22016, 22055, 22061, 22104, 22073, 22103, 22060, 22093, 22114,
   10626     22105, 22108, 22092, 22100, 22150, 22116, 22129, 22123, {f: 2, c: 22139},
   10627     22149, 22163, 22191, 22228, [12062, 22231], 22237, 22241, 22261, 22251,
   10628     22265, 22271, 22276, 22282, 22281, 22300, 24079, 24089, 24084, 24081,
   10629     24113, {f: 2, c: 24123}, 24119, 24132, 24148, 24155, 24158, 24161, 23692,
   10630     23674, 23693, 23696, 23702, 23688, {f: 2, c: 23704}, 23697, 23706, 23708,
   10631     23733, 23714, 23741, 23724, 23723, 23729, 23715, 23745, 23735, 23748,
   10632     23762, 23780, 23755, 23781, {f: 2, c: 23810}, 23847, 23846, 23854, 23844,
   10633     23838, 23814, 23835, 23896, 23870, 23860, 23869, 23916, 23899, 23919,
   10634     23901, 23915, 23883, 23882, 23913, 23924, 23938, 23961, 23965, 35955,
   10635     23991, 24005, [12091, 24435], 24439, 24450, 24455, 24457, 24460, 24469,
   10636     24473, 24476, 24488, 24493, 24501, 24508, 34914, [12090, 24417], 29357,
   10637     29360, 29364, {f: 2, c: 29367}, 29379, 29377, 29390, 29389, 29394, 29416,
   10638     29423, 29417, 29426, 29428, 29431, 29441, 29427, 29443, {f: 2, c: 29434},
   10639     29463, 29459, 29473, 29450, 29470, 29469, 29461, 29474, 29497, 29477,
   10640     29484, 29496, 29489, 29520, 29517, 29527, 29536, 29548, 29551, 29566,
   10641     [12167, 33307], 22821, 39143, 22820, [12065, 22786], 39267,
   10642     {f: 6, c: 39271}, 39284, 39287, 39293, 39296, 39300, 39303, 39306, 39309,
   10643     {f: 2, c: 39312}, {f: 3, c: 39315}, 24192, 24209, 24203, 24214, 24229,
   10644     24224, 24249, 24245, 24254, 24243, 36179, 24274, 24273, 24283, 24296,
   10645     24298, 33210, 24516, 24521, 24534, 24527, 24579, 24558, 24580, 24545,
   10646     24548, 24574, {f: 2, c: 24581}, 24554, 24557, 24568, 24601, 24629, 24614,
   10647     24603, 24591, 24589, 24617, 24619, 24586, 24639, 24609, {f: 2, c: 24696},
   10648     24699, 24698, 24642, 24682, 24701, 24726, 24730, 24749, 24733, 24707,
   10649     24722, 24716, 24731, 24812, 24763, 24753, 24797, 24792, 24774, 24794,
   10650     24756, 24864, 24870, 24853, 24867, 24820, 24832, 24846, 24875, 24906,
   10651     24949, 25004, 24980, 24999, 25015, 25044, 25077, 24541, 38579, 38377,
   10652     38379, 38385, 38387, {f: 2, c: 38389}, 38396, 38398, {f: 2, c: 38403},
   10653     38406, 38408, {f: 4, c: 38410}, 38415, 38418, {f: 3, c: 38421},
   10654     {f: 2, c: 38425}, 20012, [12121, 29247], 25109, 27701, 27732, 27740, 27722,
   10655     27811, 27781, 27792, 27796, 27788, {f: 2, c: 27752}, 27764, 27766, 27782,
   10656     27817, 27856, 27860, 27821, {f: 2, c: 27895}, 27889, 27863, 27826, 27872,
   10657     27862, 27898, 27883, 27886, 27825, 27859, 27887, 27902, 27961, 27943,
   10658     27916, 27971, 27976, 27911, 27908, 27929, 27918, 27947, 27981, 27950,
   10659     27957, 27930, 27983, 27986, 27988, 27955, 28049, 28015, 28062, 28064,
   10660     27998, {f: 2, c: 28051}, 27996, 28000, 28028, 28003, 28186, 28103, 28101,
   10661     28126, 28174, 28095, 28128, 28177, 28134, 28125, 28121, 28182, 28075,
   10662     28172, 28078, 28203, 28270, 28238, 28267, 28338, 28255, 28294,
   10663     {f: 2, c: 28243}, 28210, 28197, 28228, 28383, 28337, 28312, 28384, 28461,
   10664     28386, 28325, 28327, 28349, 28347, 28343, 28375, 28340, 28367, 28303,
   10665     28354, 28319, 28514, {f: 2, c: 28486}, 28452, 28437, 28409, 28463, 28470,
   10666     28491, 28532, 28458, 28425, 28457, 28553, 28557, 28556, 28536, 28530,
   10667     28540, 28538, 28625, 28617, 28583, 28601, 28598, 28610, 28641, 28654,
   10668     28638, 28640, 28655, 28698, 28707, 28699, 28729, 28725, 28751, 28766,
   10669     [12071, 23424], 23428, 23445, 23443, 23461, 23480, 29999, 39582, 25652,
   10670     23524, 23534, 35120, 23536, 36423, 35591, 36790, 36819, 36821, 36837,
   10671     36846, 36836, 36841, 36838, 36851, 36840, 36869, 36868, 36875, 36902,
   10672     36881, 36877, 36886, 36897, {f: 2, c: 36917}, 36909, 36911, 36932,
   10673     {f: 2, c: 36945}, 36944, 36968, 36952, 36962, 36955, 26297, 36980, 36989,
   10674     36994, 37000, 36995, 37003, [12089, 24400], 24407, 24406, 24408, 23611,
   10675     21675, 23632, 23641, 23409, 23651, 23654, 32700, 24362, 24361, 24365,
   10676     33396, 24380, 39739, [12076, 23662], 22913, 22915, 22925, {f: 2, c: 22953},
   10677     22947, 22935, 22986, 22955, 22942, 22948, 22994, 22962, 22959, 22999,
   10678     22974, {f: 2, c: 23045}, 23005, 23048, 23011, 23000, 23033, 23052, 23049,
   10679     23090, 23092, 23057, 23075, 23059, 23104, 23143, 23114, 23125, 23100,
   10680     23138, 23157, 33004, 23210, 23195, 23159, 23162, 23230, 23275, 23218,
   10681     23250, 23252, 23224, 23264, 23267, 23281, 23254, 23270, 23256, 23260,
   10682     23305, 23319, 23318, 23346, 23351, 23360, 23573, 23580, 23386, 23397,
   10683     23411, 23377, 23379, 23394, 39541, {f: 2, c: 39543}, 39546, 39551, 39549,
   10684     {f: 2, c: 39552}, 39557, 39560, 39562, 39568, {f: 2, c: 39570}, 39574,
   10685     39576, {f: 3, c: 39579}, {f: 2, c: 39583}, {f: 2, c: 39586}, 39589, 39591,
   10686     32415, 32417, 32419, 32421, {f: 2, c: 32424}, 32429, 32432, 32446,
   10687     {f: 3, c: 32448}, 32457, {f: 2, c: 32459}, 32464, 32468, 32471, 32475,
   10688     {f: 2, c: 32480}, 32488, 32491, {f: 2, c: 32494}, {f: 2, c: 32497}, 32525,
   10689     32502, {f: 2, c: 32506}, 32510, {f: 3, c: 32513}, {f: 2, c: 32519},
   10690     {f: 2, c: 32523}, 32527, {f: 2, c: 32529}, 32535, 32537, 32540, 32539,
   10691     32543, {f: 7, c: 32545}, {f: 4, c: 32554}, {f: 5, c: 32559}, 32565,
   10692     [12083, 24186], 30079, [12078, 24027], 30014, 37013, 29582, 29585, 29614,
   10693     29602, 29599, 29647, 29634, 29649, 29623, 29619, 29632, 29641, 29640,
   10694     29669, 29657, 39036, 29706, 29673, 29671, 29662, 29626, 29682, 29711,
   10695     29738, 29787, 29734, 29733, 29736, 29744, 29742, 29740, 29723, 29722,
   10696     29761, 29788, 29783, 29781, 29785, 29815, 29805, 29822, 29852, 29838,
   10697     {f: 2, c: 29824}, 29831, 29835, 29854, {f: 2, c: 29864}, 29840, 29863,
   10698     29906, 29882, {f: 3, c: 38890}, 26444, 26451, 26462, 26440, 26473, 26533,
   10699     26503, 26474, 26483, 26520, 26535, 26485, 26536, 26526, 26541, 26507,
   10700     26487, 26492, 26608, 26633, 26584, 26634, 26601, 26544, 26636, 26585,
   10701     26549, 26586, 26547, 26589, 26624, 26563, 26552, 26594, 26638, 26561,
   10702     26621, {f: 2, c: 26674}, {f: 2, c: 26720}, 26702, 26722, 26692, 26724,
   10703     26755, 26653, 26709, 26726, 26689, 26727, 26688, 26686, 26698, 26697,
   10704     26665, 26805, 26767, 26740, 26743, 26771, 26731, 26818, 26990, 26876,
   10705     {f: 2, c: 26911}, 26873, 26916, 26864, 26891, 26881, 26967, 26851, 26896,
   10706     26993, 26937, 26976, 26946, 26973, 27012, 26987, 27008, 27032, 27000,
   10707     26932, 27084, {f: 2, c: 27015}, 27086, 27017, 26982, 26979, 27001, 27035,
   10708     27047, 27067, 27051, 27053, 27092, 27057, 27073, 27082, 27103, 27029,
   10709     27104, 27021, 27135, 27183, 27117, {f: 2, c: 27159}, 27237, 27122, 27204,
   10710     27198, 27296, 27216, 27227, 27189, 27278, 27257, 27197, 27176, 27224,
   10711     27260, 27281, 27280, 27305, 27287, 27307, 29495, 29522, {f: 2, c: 27521},
   10712     27527, 27524, {f: 2, c: 27538}, 27533, {f: 2, c: 27546}, 27553, 27562,
   10713     36715, 36717, {f: 3, c: 36721}, {f: 2, c: 36725}, 36728, 36727,
   10714     {f: 2, c: 36729}, 36732, 36734, {f: 2, c: 36737}, 36740, 36743, 36747,
   10715     {f: 3, c: 36749}, 36760, 36762, 36558, 25099, 25111, 25115, 25119, 25122,
   10716     25121, 25125, 25124, 25132, 33255, 29935, 29940, 29951, 29967, 29969,
   10717     29971, [12097, 25908], {f: 3, c: 26094}, 26122, 26137, 26482, 26115, 26133,
   10718     26112, 28805, 26359, 26141, 26164, 26161, 26166, 26165, 32774, 26207,
   10719     26196, 26177, 26191, 26198, 26209, 26199, 26231, 26244, 26252, 26279,
   10720     26269, 26302, {f: 2, c: 26331}, 26342, 26345, {f: 2, c: 36146}, 36150,
   10721     36155, 36157, 36160, {f: 2, c: 36165}, {f: 2, c: 36168}, 36167, 36173,
   10722     36181, 36185, 35271, {f: 3, c: 35274}, {f: 4, c: 35278}, 29294, 29343,
   10723     29277, 29286, 29295, {f: 2, c: 29310}, 29316, 29323, 29325, 29327, 29330,
   10724     25352, 25394, 25520, 25663, 25816, 32772, 27626, 27635, 27645, 27637,
   10725     27641, 27653, 27655, 27654, 27661, 27669, {f: 3, c: 27672}, 27681, 27689,
   10726     27684, 27690, 27698, 25909, 25941, 25963, 29261, 29266, 29270, 29232,
   10727     34402, 21014, 32927, 32924, 32915, 32956, 26378, 32957, 32945, 32939,
   10728     32941, 32948, 32951, {f: 4, c: 32999}, 32987, 32962, 32964, 32985, 32973,
   10729     32983, 26384, 32989, 33003, 33009, 33012, 33005, {f: 2, c: 33037}, 33010,
   10730     33020, 26389, 33042, 35930, 33078, 33054, 33068, 33048, 33074, 33096,
   10731     33100, 33107, 33140, {f: 2, c: 33113}, 33137, 33120, 33129,
   10732     {f: 2, c: 33148}, 33133, 33127, 22605, 23221, 33160, 33154, 33169, 28373,
   10733     33187, 33194, 33228, 26406, 33226, 33211, 33217, 33190, 27428, 27447,
   10734     27449, 27459, 27462, 27481, {f: 3, c: 39121}, 39125, {f: 2, c: 39129},
   10735     [12110, 27571], 24384, 27586, 35315, 26000, 40785, 26003, 26044, 26054,
   10736     26052, 26051, 26060, 26062, 26066, 26070, 28800, 28828, 28822, 28829,
   10737     28859, 28864, 28855, 28843, 28849, 28904, 28874, 28944, 28947, 28950,
   10738     28975, 28977, 29043, 29020, 29032, 28997, 29042, 29002, 29048, 29050,
   10739     29080, 29107, 29109, 29096, 29088, 29152, 29140, 29159, 29177, 29213,
   10740     29224, 28780, 28952, 29030, 29113, 25150, 25149, 25155, {f: 2, c: 25160},
   10741     31035, 31040, 31046, 31049, {f: 2, c: 31067}, 31059, 31066, 31074, 31063,
   10742     31072, 31087, 31079, 31098, 31109, 31114, 31130, 31143, 31155, 24529,
   10743     24528, 24636, 24669, 24666, 24679, 24641, 24665, 24675, 24747, 24838,
   10744     24845, 24925, 25001, 24989, 25035, 25041, 25094, 32896, [12160, 32895],
   10745     27795, 27894, 28156, 30710, 30712, 30720, 30729, {f: 2, c: 30743}, 30737,
   10746     26027, 30765, {f: 2, c: 30748}, {f: 3, c: 30777}, 30751, 30780, 30757,
   10747     30764, 30755, 30761, 30798, 30829, {f: 2, c: 30806}, 30758, 30800, 30791,
   10748     30796, 30826, 30875, 30867, 30874, 30855, 30876, 30881, 30883, 30898,
   10749     30905, 30885, 30932, 30937, 30921, 30956, 30962, 30981, 30964, 30995,
   10750     31012, 31006, 31028, 40859, [12235, 40697], {f: 2, c: 40699}, 30449, 30468,
   10751     30477, 30457, {f: 2, c: 30471}, 30490, 30498, 30489, 30509, 30502, 30517,
   10752     30520, {f: 2, c: 30544}, 30535, 30531, 30554, 30568, 30562, 30565, 30591,
   10753     30605, 30589, 30592, 30604, 30609, {f: 2, c: 30623}, 30640, 30645, 30653,
   10754     30010, 30016, 30030, 30027, 30024, 30043, 30066, 30073, 30083, 32600,
   10755     32609, 32607, 35400, 32616, 32628, 32625, 32633, 32641, 32638, 30413,
   10756     30437, 34866, {f: 3, c: 38021}, 38027, 38026, {f: 2, c: 38028},
   10757     {f: 2, c: 38031}, 38036, 38039, 38037, {f: 3, c: 38042}, {f: 2, c: 38051},
   10758     38059, 38058, 38061, 38060, {f: 2, c: 38063}, 38066, 38068,
   10759     {f: 5, c: 38070}, {f: 2, c: 38076}, 38079, 38084, {f: 7, c: 38088},
   10760     {f: 3, c: 38096}, {f: 3, c: 38101}, 38105, 38104, 38107, {f: 3, c: 38110},
   10761     38114, {f: 2, c: 38116}, {f: 2, c: 38119}, 38122, 38121, 38123,
   10762     {f: 2, c: 38126}, {f: 3, c: 38131}, 38135, 38137, {f: 2, c: 38140}, 38143,
   10763     38147, 38146, {f: 2, c: 38150}, {f: 2, c: 38153}, {f: 3, c: 38157},
   10764     {f: 5, c: 38162}, 38168, 38171, {f: 3, c: 38173}, 38178, {f: 2, c: 38186},
   10765     38185, 38188, {f: 2, c: 38193}, 38196, {f: 3, c: 38198}, 38204,
   10766     {f: 2, c: 38206}, 38210, 38197, {f: 3, c: 38212}, 38217, 38220,
   10767     {f: 2, c: 38222}, {f: 3, c: 38226}, {f: 4, c: 38230}, 38235,
   10768     {f: 2, c: 38238}, 38237, {f: 2, c: 38241}, {f: 9, c: 38244}, 38255,
   10769     {f: 3, c: 38257}, 38202, 30695, 30700, 38601, 31189, 31213, 31203, 31211,
   10770     31238, 23879, 31235, 31234, 31262, 31252, 31289, 31287, 31313, 40655,
   10771     39333, 31344, 30344, 30350, 30355, 30361, 30372, 29918, 29920, 29996,
   10772     40480, 40482, {f: 5, c: 40488}, 40498, 40497, 40502, 40504, 40503,
   10773     {f: 2, c: 40505}, 40510, {f: 2, c: 40513}, 40516, {f: 4, c: 40518},
   10774     {f: 2, c: 40523}, 40526, 40529, 40533, 40535, {f: 3, c: 40538}, 40542,
   10775     40547, {f: 7, c: 40550}, 40561, 40557, 40563, [12135, 30098], 30100, 30102,
   10776     30112, 30109, 30124, 30115, {f: 2, c: 30131}, 30136, 30148, 30129, 30128,
   10777     30147, 30146, 30166, 30157, 30179, 30184, 30182, 30180, 30187, 30183,
   10778     30211, 30193, 30204, 30207, 30224, 30208, 30213, 30220, 30231, 30218,
   10779     30245, 30232, 30229, 30233, 30235, 30268, 30242, 30240, 30272, 30253,
   10780     30256, 30271, 30261, 30275, 30270, 30259, 30285, 30302, 30292, 30300,
   10781     30294, 30315, 30319, 32714, 31462, {f: 2, c: 31352}, 31360, 31366, 31368,
   10782     31381, 31398, 31392, 31404, 31400, 31405, 31411, 34916, 34921, 34930,
   10783     34941, 34943, 34946, 34978, 35014, 34999, 35004, 35017, 35042, 35022,
   10784     35043, 35045, 35057, 35098, 35068, 35048, 35070, 35056, 35105, 35097,
   10785     35091, 35099, 35082, 35124, 35115, 35126, 35137, 35174, 35195,
   10786     [12134, 30091], 32997, 30386, 30388, 30684, [12158, 32786], 32788, 32790,
   10787     32796, 32800, 32802, {f: 3, c: 32805}, 32809, 32808, 32817, 32779, 32821,
   10788     32835, 32838, 32845, 32850, 32873, 32881, 35203, 39032, 39040, 39043,
   10789     39049, {f: 2, c: 39052}, 39055, 39060, {f: 2, c: 39066}, {f: 2, c: 39070},
   10790     {f: 2, c: 39073}, {f: 2, c: 39077}, [12172, 34381], 34388, 34412, 34414,
   10791     34431, 34426, 34428, 34427, 34472, 34445, 34443, 34476, 34461, 34471,
   10792     34467, 34474, 34451, 34473, 34486, 34500, 34485, 34510, 34480, 34490,
   10793     34481, 34479, 34505, 34511, 34484, 34537, {f: 2, c: 34545}, 34541, 34547,
   10794     34512, 34579, 34526, 34548, 34527, 34520, 34513, 34563, 34567, 34552,
   10795     34568, 34570, 34573, 34569, 34595, 34619, 34590, 34597, 34606, 34586,
   10796     34622, 34632, 34612, 34609, 34601, 34615, 34623, 34690, 34594,
   10797     {f: 2, c: 34685}, 34683, 34656, 34672, 34636, 34670, 34699, 34643, 34659,
   10798     34684, 34660, 34649, 34661, 34707, 34735, 34728, 34770, 34758, 34696,
   10799     34693, 34733, 34711, 34691, 34731, 34789, 34732, 34741, 34739, 34763,
   10800     34771, 34749, 34769, 34752, 34762, 34779, 34794, 34784, 34798, 34838,
   10801     34835, 34814, 34826, 34843, 34849, 34873, 34876, [12152, 32566], 32578,
   10802     {f: 2, c: 32580}, 33296, 31482, 31485, 31496, {f: 2, c: 31491}, 31509,
   10803     31498, 31531, 31503, 31559, 31544, 31530, 31513, 31534, 31537, 31520,
   10804     31525, 31524, 31539, 31550, 31518, 31576, 31578, 31557, 31605, 31564,
   10805     31581, 31584, 31598, 31611, 31586, 31602, 31601, 31632, {f: 2, c: 31654},
   10806     31672, 31660, 31645, 31656, 31621, 31658, 31644, 31650, 31659, 31668,
   10807     31697, 31681, 31692, 31709, 31706, {f: 2, c: 31717}, 31722, 31756, 31742,
   10808     31740, 31759, 31766, 31755, 31775, 31786, 31782, 31800, 31809, 31808,
   10809     33278, {f: 2, c: 33281}, 33284, 33260, 34884, {f: 3, c: 33313}, 33325,
   10810     33327, 33320, 33323, 33336, 33339, {f: 2, c: 33331}, 33342, 33348, 33353,
   10811     33355, 33359, 33370, 33375, 33384, 34942, 34949, 34952, 35032, 35039,
   10812     35166, 32669, 32671, 32679, {f: 2, c: 32687}, 32690, 31868, 25929, 31889,
   10813     31901, 31900, 31902, 31906, 31922, {f: 2, c: 31932}, 31937, 31943,
   10814     {f: 2, c: 31948}, 31944, 31941, 31959, 31976, [12169, 33390], 26280, 32703,
   10815     32718, 32725, 32741, 32737, 32742, 32745, 32750, 32755, [12151, 31992],
   10816     32119, 32166, 32174, 32327, 32411, 40632, 40628, 36211, 36228, 36244,
   10817     36241, 36273, 36199, 36205, 35911, 35913, 37194, 37200, {f: 2, c: 37198},
   10818     37220, 37218, 37217, 37232, 37225, 37231, {f: 2, c: 37245}, 37234, 37236,
   10819     37241, 37260, 37253, 37264, 37261, 37265, {f: 2, c: 37282}, 37290,
   10820     {f: 3, c: 37293}, 37301, 37300, 37306, [12183, 35925], 40574, 36280, 36331,
   10821     36357, 36441, 36457, 36277, 36287, 36284, 36282, 36292, {f: 2, c: 36310},
   10822     36314, 36318, {f: 2, c: 36302}, 36315, 36294, 36332, {f: 2, c: 36343},
   10823     36323, 36345, 36347, 36324, 36361, 36349, 36372, 36381, 36383, 36396,
   10824     36398, 36387, 36399, 36410, 36416, 36409, 36405, 36413, 36401, 36425,
   10825     {f: 2, c: 36417}, {f: 2, c: 36433}, 36426, 36464, 36470, 36476, 36463,
   10826     36468, 36485, 36495, 36500, 36496, 36508, 36510, [12184, 35960], 35970,
   10827     35978, 35973, 35992, 35988, 26011, 35286, 35294, 35290, 35292, 35301,
   10828     35307, 35311, 35390, 35622, 38739, 38633, 38643, 38639, 38662, 38657,
   10829     38664, 38671, 38670, 38698, 38701, 38704, 38718, 40832, 40835,
   10830     {f: 6, c: 40837}, 40844, 40702, 40715, 40717, [12203, 38585],
   10831     {f: 2, c: 38588}, 38606, 38610, 30655, 38624, 37518, 37550, 37576, 37694,
   10832     37738, 37834, 37775, 37950, 37995, 40063, 40066, {f: 4, c: 40069}, 31267,
   10833     40075, 40078, {f: 3, c: 40080}, {f: 2, c: 40084}, {f: 2, c: 40090},
   10834     {f: 6, c: 40094}, {f: 5, c: 40101}, 40107, {f: 2, c: 40109},
   10835     {f: 8, c: 40112}, {f: 4, c: 40122}, {f: 4, c: 40132}, {f: 7, c: 40138},
   10836     {f: 3, c: 40147}, {f: 3, c: 40151}, {f: 2, c: 40156}, 40159, 40162, 38780,
   10837     38789, {f: 2, c: 38801}, 38804, 38831, 38827, 38819, 38834, 38836, 39601,
   10838     39600, 39607, 40536, 39606, 39610, 39612, 39617, 39616, 39621, 39618,
   10839     {f: 2, c: 39627}, 39633, 39749, 39747, 39751, 39753, 39752, 39757, 39761,
   10840     39144, 39181, 39214, 39253, 39252, [12221, 39647], 39649, 39654, 39663,
   10841     39659, 39675, 39661, 39673, 39688, 39695, 39699, 39711, 39715,
   10842     {f: 2, c: 40637}, 32315, 40578, {f: 2, c: 40583}, 40587, 40594, 37846,
   10843     40605, 40607, {f: 3, c: 40667}, 40672, 40671, 40674, 40681, 40679, 40677,
   10844     40682, 40687, 40738, 40748, 40751, 40761, 40759, {f: 2, c: 40765}, 40772,
   10845     12295, {s: 13}, 30362, 34297, 31001, 24859, 39599, 35158, 22761, 32631,
   10846     25850, 25943, 38930, 36774, 32070, 24171, 32129, 37770, 35607, 39165,
   10847     23542, 22577, 39825, 36649, [12185, 35997], 37575, 29437, 20633, 24970,
   10848     32179, 31558, 30050, 25987, 24163, 38281, 37002, 32232, 36022, 35722,
   10849     36783, 36782, 27161, 40009, 30303, 28693, 28657, 36051, 25839, 39173,
   10850     25765, 37474, 37457, 39361, 35036, 36001, 21443, 34870, 27544, 24922,
   10851     24920, 29158, 33980, 33369, 20489, 28356, 21408, 20596, 28204, 23652,
   10852     35435, 25881, 25723, 34796, 39262, 35730, 32399, 37855, 29987, 38369,
   10853     39019, 22580, 22039, [12199, 38263], 20767, 33144, 24288, 26274, 37396,
   10854     [12190, 36554], 24505, 22645, 38515, 35183, 31281, 25074, 35488, 39425,
   10855     36978, 39347, [12242, 40786], 29118, 34909, 34802, 23541, 30087, 36490,
   10856     31820, 32162, 37276, 37604, 38619, 30990, 20786, 35320, 34389, 20659,
   10857     30241, 38358, 21109, 37656, 32020, 32189, 36781, 35422, 36060, 32880,
   10858     24478, 21474, 36517, 31428, 37679, 36948, 24118, 36024, 25812, 21934,
   10859     37170, 25763, 33213, 24986, 35477, 24392, 30070, 25803, 40680, 34153,
   10860     27284, 25623, 23798, 31153, 23566, 29128, 37159, 25973, 28364, 36958,
   10861     32224, 39003, 40670, 22666, 38651, 28593, 37347, 35519, 35548, 37336,
   10862     38914, 37664, 35330, 26481, 21205, 26847, 20941, [12222, 39717], 29346,
   10863     29544, 35712, 36077, 37709, 37723, 26039, 32222, 38538, 23565, 22136,
   10864     38931, 37389, 22890, 22702, 40285, 38989, 35355, 24801, 39187, 20818,
   10865     29246, 39180, 36019, 30332, 32624, 38309, 31020, 37353, 29033, 31684,
   10866     36009, 39151, 35370, 32033, [12214, 39131], 35513, 24290, 36027, 32027,
   10867     22707, 22894, 24996, 31966, 35920, 26963, 37586, [12213, 39080], 30219,
   10868     39342, 32299, 35575, 40179, 33178, 36667, 25771, 36628, 36070, 24489,
   10869     36000, 35331, 23142, 32283, 35442, 37411, 33995, 24185, 36245, 36123,
   10870     23713, 21083, 37628, 32177, 23831, 37804, 25841, 40255, 38307, 37499,
   10871     20491, 32102, 40852, 38799, 36002, 37390, 28317, 27083, 36092, 34865,
   10872     39015, 21102, 38364, 35264, 39208, 24931, 36011, 24291, 35215, 27512,
   10873     [12244, 40860], 38312, 36556, 35437, 27331, 36020, 21130, 36645, 37707,
   10874     22283, 36942, 39405, 38867, 28450, 34399, 38305, 40372, 36032, 36703,
   10875     40251, 32005, 22778, 35703, 28396, 22057, 33775, 30059, 21123, 35441,
   10876     25079, 22750, 27489, 29872, 36996, 32233, 35594, 25582, 36637, 36036,
   10877     31330, 26371, 29172, 21295, 35569, 35496, 32362, 33911, 28222, 29554,
   10878     36008, 31117, 25802, 27231, 31309, 39249, 35663, 40388, 32318, 32221,
   10879     26997, 36655, 32026, 25824, 24190, 34186, 21137, 28639, 35336, 35352,
   10880     38555, 32380, 32000, 22846, 33698, 38960, 36040, 37440, 20729, 39381,
   10881     27570, 30435, 22533, 31627, 38291, 33393, 32216, 32365, 27298, 40572,
   10882     25536, 25791, 31777, 20745, 34214, 27323, 37970, 36368, 36068,
   10883     [12178, 35211], 37749, 33382, 21133, 39198, 28472, 28666, 28567, 23559,
   10884     28479, 34083, 27123, 22892, 35611, 37292, 33184, 28550, 39509, 23308,
   10885     25898, 37496, 30703, 20709, 39171, 32371, 32094, 36686, 36611, 38542,
   10886     31680, 28500, 32080, 35489, 32202, 37670, 20677, 35641, 36914, 29180,
   10887     30433, 21185, 33686, 39912, 39514, 32147, 38968, 37857, 24465, 30169,
   10888     31478, 31998, 33290, 39378, 33289, 25818, 37624, 25084, 21127, 40273,
   10889     32121, 35258, 35363, 32118, 37406, 36557, 39423, 38283, 20977, 38982,
   10890     27579, 35506, 22718, 25031, 25715, 24235, 35122, 35463, 22602, 20744,
   10891     23532, 31014, 26336, 34407, 24011, 31418, 39243, 28528, 25844, 38346,
   10892     34847, 33240, 33802, 20358, 36084, 34253, 27396, 25876, 31811, 38348,
   10893     34349, 28734, 35733, 25900, 35261, 25078, 32412, 29211, 28651, 25736,
   10894     21214, 28551, 27138, 37939, 22744, 39006, 31852, 38626, 28757, 35023,
   10895     39881, 31150, 40599, 21426, 21237, 31019, 27511, 28701, 38584, 20486,
   10896     32879, 34030, 36899, 37934, 24976, 28451, 31806, 25986, 33225, 37832,
   10897     25088, 29001, 32244, 31975, 20841, 36635, 35538, 30274, 36988, 37904,
   10898     29557, 33256, 37168, 40023, 36035, 40801, 37428, 38728, 23994, 38936,
   10899     39230, 21129, [12243, 40845], 32894, 22184, 31840, 22751, 25871, 38580,
   10900     27155, 23105, 25695, 31757, 34310, 30439, 39025, 24300, 29200, 25796,
   10901     28407, 34396, 39791, 36034, 37682, 38520, 39522, 37569, 23650, 32311,
   10902     24942, 28670, 32209, 24018, 25891, 23423, 28772, 20098, 25476, 36650,
   10903     20523, 20374, 28138, 32184, 35542, 34367, 32645, 37007, 38012, 31854,
   10904     39486, 39409, 32097, 23229, 29802, 30908, 34718, [12218, 39340], 39393,
   10905     21966, 36023, [12230, 40613], 36067, 36993, 30622, 39237, 34875, 28415,
   10906     35646, 37672, 37466, 36031, 37762, [12200, 38272], 24758, 20497, 37683,
   10907     22818, 35598, 24396, 35219, 32191, 32236, 24287, 28357, 25003, 38313,
   10908     40180, 37528, 35628, 35584, 30045, 37385, 32013, 38627, 25747, 33126,
   10909     24817, 39719, 39186, 25836, 33193, 25862, 37312, [12227, 40165], 32886,
   10910     22169, 38007, 37811, 27320, 29552, 23527, 25840, 28632, 37397, 32016,
   10911     33215, 28611, 36786, 30247, 35582, 27472, 40407, 27590, 22036, 28442,
   10912     30436, 40848, 36064, 22132, 40300, 39449, 39108, 38971, 36007, 34315,
   10913     24977, 35413, 28497, 38935, 25778, 37610, 20693, 27192, 35676, 33229,
   10914     [12241, 40778], 39438, 35912, 21843, 27683, 35350, 29309, 37370, 37467,
   10915     36983, 31805, 35609, 37666, 37463, 28154, 35700, 22649, 27085, 21958,
   10916     22715, 34196, 25654, 37740, 27211, 21932, 20689, 32761, 31429, 31434,
   10917     27453, 35242, 23522, 36629, 27691, 20670, 38915, 35531, 24950, 29898,
   10918     31406, 36264, 21312, 36544, 39493, 40818, 39028, 27402, 21240, 40306,
   10919     30906, 35731, 39250, 25854, 32350, 29105, 38860, 35469, 32009, 27054,
   10920     32104, 36575, 37613, 38287, 28516, 28753, 34217, 39955, 36093, 20632,
   10921     21930, 39479, 25475, 28544, 27578, 32023, 31721, 26348, 38275, 38493,
   10922     36109, 32341, 20663, 36062, 29138, 32057, 36050, 25448, 25885, 25086,
   10923     35373, 32051, 23529, 23352, 33102, 28402, 32882, 32361, 21213, 32854,
   10924     24107, 29509, 28629, 35433, 26178, 34645, 23526, 35672, 39387, 21218,
   10925     36969, 37323, 39166, 35222, 35430, 22781, 29560, 27166, 36664, 26360,
   10926     36118, 23660, 34899, 27193, 31466, 25976, 24101, 38617, 35504, 38918,
   10927     35500, 30889, 29197, 32114, 39164, 39686, 32883, 24939, 38924, 35359,
   10928     35494, 25851, 34311, 35380, 32901, 38614, 38568, 32143, 27506, 23403,
   10929     25613, 32302, 29795, 37782, 29562, 25787, 33274, 24907, 25892, 36010,
   10930     30321, 28760, 22727, 35674, 35527, 22022, 28271, 29145, 28644, 32295,
   10931     35342, 39472, 35588, 37563, 38988, 39636, 26781, 36028, 37941, 24307,
   10932     32893, 28916, 37509, 32113, 38957, 22294, 22615, 22296, 38973, 40213,
   10933     39345, 39389, 27234, 31402, 35178, 24398, 28771, 38929, 33836, 32178,
   10934     [12209, 38859], 36949, 22285, 29234, 28656, 32173, 33894, 20553, 20702,
   10935     32239, 35586, 34907, 32862, 32011, 31337, 21839, 25790, 34680, 28198,
   10936     31401, 21978, 37794, 28879, 35491, 28961, 34154, 22626, 38695, 21209,
   10937     35492, 37675, 29351, 35186, 32722, 37521, 25138, 32048, 34662, 36676,
   10938     23805, 20448, 29433, 22151, 37697, 39854, 32406, 36066, 37532, 38289,
   10939     39023, 38570, 29694, 29563, 32291, 39201, 25010, 32171, 38002, 37129,
   10940     35443, 38911, 38917, 34157, 22210, 37559, 26313, 22063, 21332, 25406,
   10941     33029, 35559, 23531, 28681, 35613, 37573, 37313, 33288, 37561, 32137,
   10942     38920, 35377, 32210, 32396, 36562, 25080, 36984, 30316, 32098, 23416,
   10943     21211, 35426, 23563, 39348, 35347, 35338, 36956, 22739, 40201, 40232,
   10944     21854, 20126, 35357, 38329, 40573, 22196, 38996, 38331, 33399, 21421,
   10945     30831, 35578, 39511, 40230, 26954, 25562, 30221, 38525, 30306, 39178,
   10946     27171, 22575, 35617, 34277, 29242, [12212, 38913], 26989, 33865, 37291,
   10947     37541, 38948, 36986, 20736, 34811, 34269, 20740, 25014, 32681, 35427,
   10948     35696, 35516, 35695, 32377, 34093, 38512, 37504, 39154, 38577, 27387,
   10949     23344, 40441, 25033, 32403, 29801, 34722, 29151, 29074, 34821, 36111,
   10950     31310, 21938, 25793, 20653, 30320, 36404, 20778, 24962, 37109, 37438,
   10951     29494, 35480, 36671, 39192, [12226, 39770], 28417, 33287, 23996, 35486,
   10952     39729, 29508, 35709, 38928, 39341, 40219, 28149, 36677, 22290, 21729,
   10953     22291, 32227, 36960, 39000, 32004, 36493, 38000, 38322, 38642, 37142,
   10954     38549, 36939, 34292, 37270, 26248, 38620, 36617, 25890, 26283, 36106,
   10955     36124, 33247, 38015, 26839, 31432, 36012, 25799, 21063, 28580, 36042,
   10956     36104, 36555, 37720, 38296, 35408, 40779, 20661, 27656, 30430, 26028,
   10957     36670, 23940, 26855, 25136, 32187, 24373, 28466, 24115, 36076, 33081,
   10958     36249, 34756, 36685, 37754, 36889, 35998, 37341, 20597, 35386, 37806,
   10959     38499, 24128, 30309, 37165, 35657, 32340, 32887, 22519, 34937, 32025,
   10960     25711, 25842, 24159, 36074, 28399, 37912, 32066, 31278, 33131, 34886,
   10961     35589, 36600, 30394, 26205, 39519, 35576, 35461, 29165, 30682, 22225,
   10962     36015, 37956, 31689, 39376, 23560, 30938, 36681, 36090, 27137, 33674,
   10963     35037, 22941, 22767, 29376, 37648, 36101, 22684, 32180, 35524, 28310,
   10964     28609, 36039, 28460, 32156, 32317, 32305, 37138, 35419, 32068, 38013,
   10965     21959, 21401, 21428, 38760, 36107, 21293, 21297, 36094, 21060, 21132,
   10966     21108, 20660, 20480, 20630, 20757, 20738, 20756, 20796, 20791, 20712,
   10967     20674, 20795, 20752, 20794, 20681, 31988, 40652, 22213, 40172, 35131,
   10968     33248, 35329, 35344, 35340, 35349, 35635, 35406, 35365, 35393, 35382,
   10969     35398, 35412, 35416, 35410, 35462, 35460, 35455, 35440, 35452, 35445,
   10970     35436, 35438, 35533, 35554, 35425, 35482, 35493, {f: 2, c: 35473}, 35535,
   10971     35537, 35529, 35547, 35543, 35522, 35510, 35574, 35563, 35604, 35585,
   10972     35556, 35565, 35580, 35571, 35558, 35566, 35550, 35624, 35740, 35606,
   10973     35610, 35600, 35627, 35629, 35670, 35673, 35662, 35742, 35691, 35734,
   10974     38488, 37178, 37140, 37172, 37087, 37174, 37126, 37192, 33467, 21233,
   10975     24048, 22538, 22745, 22754, 22752, 22746, 22497, 22607, 22550, 22610,
   10976     22557, 22628, 34188, 34131, 34294, 33703, 33799, 34031, 33511, 34338,
   10977     34086, 22603, 29026, 34136, 34045, 34126, 34184, 34234, 29334, 28366,
   10978     34113, 34254, 34130, 33984, 33874, 33892, 33940, 33845, 34207, 34133,
   10979     40367, 33939, 32264, 34118, 34146, 34078, 39488, 34362, 37795, 34167,
   10980     34334, 34298, 34308, 34282, 34330, 22889, 23607, 25451, 25718, 25759,
   10981     25681, 25692, 25779, 25860, 25878, 25847, 25852, 25883, 22064, 22072,
   10982     22216, 22182, 21764, 21692, 22144, 22109, 22112, 22069, 22006, 22118,
   10983     22130, 22156, 22117, 22044, 22062, 21993, 22038, 22208, 22029, 22195,
   10984     22209, 22127, 36705, 22198, 22165, 22279, 24131, 24172, 24152, 24151,
   10985     23943, 23796, 23888, 23852, 23975, 23968, 23959, 23821, 23992, 23937,
   10986     24020, 24480, 29559, 29505, 29546, 29499, 29547, 29568, 29564, 39136,
   10987     39219, 39145, 39228, {f: 2, c: 39146}, 39149, 39156, 39177, 39185, 39195,
   10988     39223, 39231, 39235, {f: 3, c: 39240}, 39244, 39266, 24289, 36065, 25082,
   10989     25006, 24938, 24894, 24757, 24884, 25036, 24927, 25064, 24827, 24887,
   10990     24818, 24947, 24860, 24978, 38274, 38278, 38344, 38286, 38292, 38284,
   10991     38373, 38317, 38315, 39726, 38316, 38334, 38326, 39721, 38335, 38333,
   10992     38332, 38339, 38347, 38356, 38352, 38357, 38366, 28739, 28505, 28711,
   10993     28696, 28668, 28039, 28025, 28254, 28590, 28687, 28408, 28527, 28150,
   10994     28543, 28678, 28576, 28683, 28775, 28740, 28677, 28535, 28704, 28703,
   10995     28722, 28712, 28765, 39467, 36999, 36885, 37008, 23656, 24371, 23285,
   10996     23255, 23296, 23149, 23304, 23372, 23207, 23291, 23307, 23329, 23338,
   10997     23321, 39380, 39391, 39385, 39478, 39515, 39377, 39384, 39501, 39498,
   10998     39394, 39530, 39439, 39437, 39429, 39490, 39469, 39446, 39489, 39470,
   10999     39480, {f: 2, c: 39491}, 39503, 39525, 39524, 31993, 32006, 32002,
   11000     {f: 2, c: 32007}, 32394, 32028, 32021, 32019, 32058, 32050, 32049, 32272,
   11001     32060, 32064, 32063, 32093, 32078, 32115, 32134, 32131, 32136, 32190,
   11002     32186, 32203, 32212, 32196, 32158, 32172, 32185, 32163, 32176, 32199,
   11003     32217, 32215, 32249, 32242, 32354, 32230, 32246, 32241, 32267, 32225,
   11004     32265, 32285, 32287, 32286, 32301, 32266, 32273, 32381, 32313, 32309,
   11005     32306, 32326, 32325, 32392, 32346, 32338, 32366, 32382, 32368, 32367,
   11006     32408, 29859, 29771, 29903, 38922, 29885, 29759, 29833, 29862, 29908,
   11007     29914, 38873, 38878, 38876, 27050, 27370, 26776, 26838, 27141, 26783,
   11008     27355, 27379, 27368, 27359, 27273, 26895, 27208, 26984, 27071, 27194,
   11009     27292, 27410, 27422, 27357, 27111, 27407, 27414, 27372, 27354, 27384,
   11010     27315, 27367, 27299, 27347, 27358, 27556, 27550, 27566, 27563, 27567,
   11011     36564, 36571, 36594, 36603, 36708, 36601, 36604, 36587, 36580, 36706,
   11012     36602, 36606, 36618, 36615, 36613, 36626, 36646, {f: 2, c: 36638}, 36636,
   11013     36659, 36678, 36692, 25108, 25127, 29964, 26311, 26308, 26249, 26326,
   11014     36033, 36016, 36026, 36029, 36100, 36018, 36037, 36112, 36049, 36058,
   11015     36053, 36075, 36071, 36091, 35224, 35244, 35233, 35263, 35238, 35247,
   11016     35250, 35255, 27647, 27660, 27692, 29272, 26407, 33110, 33242, 33051,
   11017     33214, 33121, 33231, 27487, {f: 2, c: 39086}, 39094, 39100, 39110, 39112,
   11018     36674, 40783, 26005, 29036, 29010, 29079, 29121, 29148, 29182, 31152,
   11019     31118, 31146, 25055, 24932, 25059, 25095, 28585, 30959, 30893, 30824,
   11020     30904, 31018, 31025, 30820, 30973, 30951, 30947, 40853, 30616, 30558,
   11021     30652, 32646, 32648, {f: 3, c: 37330}, 37337, 37335, 37333, 37367, 37351,
   11022     37348, 37702, 37365, 37369, 37384, 37414, 37445, 37393, 37392, 37377,
   11023     37415, 37380, 37413, 37376, 37434, 37478, 37431, 37427, 37461, 37437,
   11024     37432, 37470, {f: 2, c: 37484}, 37439, 37984, 37424, 37449, 37448, 37453,
   11025     37422, 37433, 37944, 37548, 37536, 37498, 37546, 37614, 37583, 37891,
   11026     37603, 37946, 37553, 37542, 37799, 37526, 37580, 37545, 37877, 37523,
   11027     37503, 37801, 37530, 37658, 37547, 37507, 37899, 37544, 37539, 37906,
   11028     37688, 37617, 37847, 37605, 37616, 37615, 37608, 37564, 37597, 37622,
   11029     {f: 2, c: 37926}, 37571, 37599, 37606, 37650, 37638, 37737, 37659, 37696,
   11030     37633, 37653, 37678, 37699, {f: 2, c: 37639}, 37663, 37657, 37733, 37703,
   11031     37750, 37716, 37732, 37802, 37744, 37764, 37860, 37848, 37928, 37767,
   11032     37836, 37784, 37816, 37823, 37798, 37808, 37813, 37964, 37858,
   11033     {f: 2, c: 37852}, 37837, 37854, 37827, 37831, 37841, 37908, 37917, 37879,
   11034     37989, 37907, 37997, 37920, 38009, 37881, 37913, 37962, 37938, 37951,
   11035     37972, 37987, 37758, 31329, 40169, 40182, 40199, 40198, 40227, 40327,
   11036     40469, 40221, 40223, 40421, 40239, 40409, 40240, 40258, 40478, 40275,
   11037     40477, 40288, 40274, 40435, 40284, 40289, 40339, 40298, 40303, 40329,
   11038     40344, 40346, 40384, 40357, 40361, 40386, 40380, 40474, 40403, 40410,
   11039     40431, 40422, 40434, 40440, 40460, 40442, 40475, 30308, 30296, 30311,
   11040     30210, {f: 2, c: 30278}, 30281, 30238, 30267, {f: 2, c: 30317}, 30313,
   11041     30322, 31431, 31414, 35168, 35123, 35165, 35143, 35128, 35172, 30392,
   11042     32814, 32812, 32889, 32885, 38919, {f: 2, c: 38926}, 38945, 38940, 28481,
   11043     38950, 38967, 38990, 38995, 39027, 39010, 39001, 39013, 39020, 39024,
   11044     34787, 34822, 34566, 34851, 34806, 34554, 34799, 34692, 34832, 34760,
   11045     34833, 34747, 34766, 32588, 31716, 31591, 31849, 31731, 31744, 31691,
   11046     31836, 31774, 31787, 31779, 31850, 31839, 33380, 33387, 35018, 32677,
   11047     31986, 31990, 31965, 32310, 40617, 36274, 37317, 37315, 40570, 36489,
   11048     36428, 36498, 36474, 36437, 36506, 36491, 36499, 36497, 36513, 36451,
   11049     36522, 36518, 35316, 35318, 38746, 38722, 38717, 38724, 40788, 40799,
   11050     40793, 40800, 40796, 40806, 40812, 40810, 40823, [12236, 40701], 40703,
   11051     40713, 35726, 38014, 37864, 39799, 39796, 39809, 39811, 39822, 40056,
   11052     31308, 39826, 40031, 39824, 39853, 39834, 39850, 39838, 40045, 39851,
   11053     39837, 40024, 39873, 40058, 39985, 39993, 39971, 39991, 39872, 39882,
   11054     39879, 39933, 39894, {f: 2, c: 39914}, 39905, 39908, 39911, 39901, 39906,
   11055     39920, 39899, 39924, 39892, 40029, 39944, 39952, 39949, 39954, 39945,
   11056     39935, 39968, 39986, 39981, 39976, 39973, 39977, 39987, 39998, 40008,
   11057     39995, 39989, 40005, 40022, 40020, 40018, 40039, 38851, 38845, 38857,
   11058     40379, 39631, 39638, 39637, 39768, 39758, 39255, 39260, 39714, 40695,
   11059     40690, 35180, 38342, 37686, 24390, 34068, 32404, 40803, 22137, 40725,
   11060     22081, 39662, 35079, 31296, 39091, 38308, 39693, 36852, 24409, 31339,
   11061     39138, 20642, 34193, 20760, 25458, 21067, 30543, 32397, 26310, 30637,
   11062     [12228, 40565], 22217, 40692, 28635, 25054, 30663, 28720, 40629, 34890,
   11063     38370, 38854, 31844, 32308, 38822, 40623, 22220, 39089, 27311, 32590,
   11064     31984, 20418, 32363, 40569, 22190, 39706, 33903, 31142, 31858, 39634,
   11065     38587, 32251, 35069, 30787, {f: 10, c: 8560}, {f: 2, c: 714}, 729, 8211,
   11066     8213, 8229, 8245, 8453, 8457, {f: 4, c: 8598}, 8725, 8735, 8739, 8786,
   11067     {f: 2, c: 8806}, 8895, {f: 36, c: 9552}, {f: 15, c: 9601}, {f: 3, c: 9619},
   11068     {f: 2, c: 9660}, {f: 4, c: 9698}, 9737, 8853, 12306, {f: 2, c: 12317},
   11069     {f: 9, c: 12321}, 12963, {f: 2, c: 13198}, {f: 3, c: 13212}, 13217, 13252,
   11070     13262, {f: 2, c: 13265}, 13269, 65072, 65506, 65508, 8481, 12849, 8208,
   11071     12540, {f: 2, c: 12443}, {f: 2, c: 12541}, 12294, {f: 2, c: 12445},
   11072     {f: 10, c: 65097}, {f: 4, c: 65108}, {f: 14, c: 65113}, {f: 4, c: 65128},
   11073     12350, {f: 12, c: 12272}, 19970, {f: 3, c: 19972}, 19983, 19986, 19991,
   11074     {f: 3, c: 19999}, 20003, 20006, 20009, {f: 2, c: 20014}, 20017, 20019,
   11075     20021, 20023, 20028, {f: 3, c: 20032}, 20036, 20038, 20042, 20049, 20053,
   11076     20055, {f: 2, c: 20058}, {f: 4, c: 20066}, {f: 2, c: 20071},
   11077     {f: 6, c: 20074}, 20082, {f: 10, c: 20084}, {f: 3, c: 20095},
   11078     {f: 2, c: 20099}, [12037, 20101], 20103, 20106, 20112, {f: 2, c: 20118},
   11079     20121, {f: 2, c: 20124}, 20131, 20138, {f: 3, c: 20143}, 20148,
   11080     {f: 4, c: 20150}, {f: 3, c: 20156}, 20168, 20172, {f: 2, c: 20175}, 20178,
   11081     {f: 3, c: 20186}, 20192, 20194, {f: 2, c: 20198}, 20201, {f: 3, c: 20205},
   11082     20209, 20212, {f: 3, c: 20216}, 20220, 20222, 20224, {f: 7, c: 20226},
   11083     {f: 2, c: 20235}, {f: 5, c: 20242}, {f: 2, c: 20252}, 20257, 20259,
   11084     {f: 2, c: 20264}, {f: 3, c: 20268}, 20273, 20275, 20277, 20279, 20281,
   11085     20283, {f: 5, c: 20286}, {f: 2, c: 20292}, {f: 6, c: 20295}, 20306, 20308,
   11086     20310, {f: 2, c: 20321}, 20326, 20328, {f: 2, c: 20330}, {f: 2, c: 20333},
   11087     {f: 2, c: 20337}, 20341, {f: 4, c: 20343}, 20349, {f: 3, c: 20352}, 20357,
   11088     20359, 20362, 20364, 20366, 20368, {f: 2, c: 20370}, 20373,
   11089     {f: 3, c: 20376}, 20380, {f: 2, c: 20382}, {f: 2, c: 20385}, 20388, 20395,
   11090     20397, {f: 5, c: 20400}, {f: 9, c: 20406}, {f: 2, c: 20416},
   11091     {f: 4, c: 20422}, {f: 3, c: 20427}, {f: 5, c: 20434}, 20441, 20443, 20450,
   11092     {f: 2, c: 20452}, 20455, {f: 2, c: 20459}, 20464, 20466, {f: 4, c: 20468},
   11093     20473, {f: 3, c: 20475}, 20479, {f: 5, c: 20481}, {f: 2, c: 20487}, 20490,
   11094     20494, 20496, 20499, {f: 3, c: 20501}, 20507, {f: 2, c: 20509}, 20512,
   11095     {f: 3, c: 20514}, 20519, {f: 11, c: 20527}, 20539, 20541, {f: 4, c: 20543},
   11096     {f: 3, c: 20548}, {f: 2, c: 20554}, 20557, {f: 5, c: 20560},
   11097     {f: 4, c: 20566}, 20571, {f: 8, c: 20573}, {f: 6, c: 20582},
   11098     {f: 7, c: 20589}, {f: 3, c: 20600}, {f: 2, c: 20604}, {f: 4, c: 20609},
   11099     {f: 2, c: 20614}, {f: 4, c: 20617}, {f: 8, c: 20622}, 20631,
   11100     {f: 8, c: 20634}, 20644, 20646, {f: 2, c: 20650}, {f: 4, c: 20654}, 20662,
   11101     {f: 2, c: 20664}, {f: 2, c: 20668}, {f: 3, c: 20671}, {f: 2, c: 20675},
   11102     {f: 3, c: 20678}, {f: 5, c: 20682}, 20688, {f: 3, c: 20690},
   11103     {f: 3, c: 20695}, {f: 3, c: 20699}, {f: 6, c: 20703}, {f: 3, c: 20713},
   11104     {f: 4, c: 20719}, 20724, {f: 3, c: 20726}, 20730, {f: 4, c: 20732}, 20737,
   11105     20739, 20741, 20746, {f: 4, c: 20748}, 20753, 20755, {f: 2, c: 20758},
   11106     {f: 6, c: 20761}, 20768, {f: 8, c: 20770}, {f: 7, c: 20779},
   11107     {f: 4, c: 20787}, {f: 2, c: 20792}, {f: 2, c: 20797}, 20802, 20807, 20810,
   11108     20812, {f: 3, c: 20814}, 20819, {f: 3, c: 20823}, 20827, {f: 5, c: 20829},
   11109     {f: 2, c: 20835}, {f: 2, c: 20838}, 20842, 20847, 20850, 20858,
   11110     {f: 2, c: 20862}, {f: 2, c: 20867}, {f: 2, c: 20870}, {f: 2, c: 20874},
   11111     {f: 4, c: 20878}, {f: 2, c: 20883}, 20888, 20890, {f: 3, c: 20893}, 20897,
   11112     20899, {f: 5, c: 20902}, {f: 2, c: 20909}, 20916, {f: 3, c: 20920},
   11113     {f: 2, c: 20926}, {f: 3, c: 20929}, 20933, 20936, 20938, 20942, 20944,
   11114     {f: 9, c: 20946}, 20956, {f: 2, c: 20958}, {f: 2, c: 20962},
   11115     {f: 6, c: 20965}, 20972, 20974, 20978, 20980, 20983, 20990,
   11116     {f: 2, c: 20996}, 21001, {f: 2, c: 21003}, {f: 2, c: 21007},
   11117     {f: 3, c: 21011}, 21020, {f: 2, c: 21022}, {f: 3, c: 21025},
   11118     {f: 3, c: 21029}, 21034, 21036, 21039, {f: 2, c: 21041}, {f: 2, c: 21044},
   11119     21052, 21054, {f: 2, c: 21061}, {f: 2, c: 21064}, {f: 2, c: 21070},
   11120     {f: 2, c: 21074}, 21077, {f: 4, c: 21079}, 21085, {f: 2, c: 21087},
   11121     {f: 3, c: 21090}, 21094, 21096, {f: 3, c: 21099}, {f: 2, c: 21104}, 21107,
   11122     {f: 7, c: 21110}, 21118, 21120, {f: 3, c: 21124}, 21131, {f: 2, c: 21134},
   11123     21138, {f: 7, c: 21140}, 21148, {f: 4, c: 21156}, {f: 3, c: 21166},
   11124     {f: 10, c: 21172}, 21184, 21186, {f: 3, c: 21188}, 21192, 21194,
   11125     {f: 4, c: 21196}, 21201, {f: 2, c: 21203}, 21207, 21210, 21212,
   11126     {f: 2, c: 21216}, 21219, {f: 11, c: 21221}, {f: 3, c: 21234},
   11127     {f: 2, c: 21238}, {f: 3, c: 21243}, {f: 4, c: 21249}, 21255,
   11128     {f: 4, c: 21257}, 21262, {f: 4, c: 21265}, 21272, {f: 2, c: 21275},
   11129     {f: 2, c: 21278}, 21282, {f: 2, c: 21284}, {f: 3, c: 21287},
   11130     {f: 2, c: 21291}, 21296, {f: 6, c: 21298}, [12054, 21304],
   11131     {f: 2, c: 21308}, 21314, 21316, 21318, {f: 3, c: 21323}, 21328,
   11132     {f: 2, c: 21336}, 21339, 21341, 21349, 21352, 21354, {f: 2, c: 21356},
   11133     21362, 21366, 21369, {f: 4, c: 21371}, {f: 2, c: 21376}, 21379,
   11134     {f: 2, c: 21383}, 21386, {f: 7, c: 21390}, {f: 2, c: 21398},
   11135     {f: 2, c: 21403}, 21406, 21409, 21412, 21415, {f: 3, c: 21418},
   11136     {f: 3, c: 21423}, 21427, 21429, {f: 4, c: 21431}, {f: 3, c: 21436}, 21440,
   11137     {f: 4, c: 21444}, {f: 3, c: 21454}, {f: 2, c: 21458}, 21461, 21466,
   11138     {f: 3, c: 21468}, 21473, 21479, 21492, 21498, {f: 3, c: 21502}, 21506,
   11139     21509, 21511, 21515, 21524, {f: 3, c: 21528}, 21532, 21538,
   11140     {f: 2, c: 21540}, 21546, 21552, 21555, {f: 2, c: 21558}, 21562, 21565,
   11141     21567, {f: 2, c: 21569}, {f: 2, c: 21572}, 21575, 21577, {f: 4, c: 21580},
   11142     21585, 21594, {f: 5, c: 21597}, 21603, 21605, 21607, {f: 8, c: 21609},
   11143     21620, {f: 2, c: 21625}, {f: 2, c: 21630}, 21633, 21635, 21637,
   11144     {f: 4, c: 21639}, 21645, 21649, 21651, {f: 2, c: 21655}, 21660,
   11145     {f: 5, c: 21662}, 21669, 21678, 21680, 21682, {f: 3, c: 21685},
   11146     {f: 2, c: 21689}, 21694, 21699, 21701, {f: 2, c: 21706}, 21718, 21720,
   11147     21723, 21728, {f: 3, c: 21730}, {f: 2, c: 21739}, {f: 3, c: 21743},
   11148     {f: 6, c: 21748}, 21755, 21758, 21760, {f: 2, c: 21762}, 21765, 21768,
   11149     {f: 5, c: 21770}, {f: 2, c: 21778}, {f: 6, c: 21781}, {f: 4, c: 21788},
   11150     21793, {f: 2, c: 21797}, {f: 2, c: 21800}, 21803, 21805, 21810,
   11151     {f: 3, c: 21812}, {f: 4, c: 21816}, 21821, 21824, 21826, 21829,
   11152     {f: 2, c: 21831}, {f: 4, c: 21835}, {f: 2, c: 21841}, 21844,
   11153     {f: 5, c: 21847}, 21853, {f: 2, c: 21855}, {f: 2, c: 21858},
   11154     {f: 2, c: 21864}, 21867, {f: 6, c: 21871}, {f: 2, c: 21881}, 21885, 21887,
   11155     {f: 2, c: 21893}, {f: 3, c: 21900}, 21904, {f: 2, c: 21906},
   11156     {f: 3, c: 21909}, {f: 2, c: 21914}, 21918, {f: 7, c: 21920},
   11157     {f: 2, c: 21928}, 21931, 21933, {f: 2, c: 21935}, 21940, 21942, 21944,
   11158     21946, 21948, {f: 5, c: 21951}, 21960, {f: 2, c: 21962}, {f: 2, c: 21967},
   11159     21973, {f: 3, c: 21975}, 21979, 21982, 21984, 21986, 21991,
   11160     {f: 2, c: 21997}, {f: 2, c: 22000}, 22004, {f: 5, c: 22008}, 22015,
   11161     {f: 4, c: 22018}, 22023, {f: 2, c: 22026}, {f: 4, c: 22032}, 22037,
   11162     {f: 2, c: 22041}, 22045, {f: 3, c: 22048}, {f: 2, c: 22053}, 22056,
   11163     {f: 2, c: 22058}, 22067, 22071, 22074, {f: 3, c: 22076}, 22080,
   11164     {f: 10, c: 22082}, {f: 5, c: 22095}, {f: 2, c: 22101}, {f: 2, c: 22106},
   11165     {f: 2, c: 22110}, 22113, 22115, 22119, {f: 2, c: 22125}, 22128, 22131,
   11166     22133, 22135, 22138, {f: 3, c: 22141}, {f: 4, c: 22145}, {f: 4, c: 22152},
   11167     22157, {f: 3, c: 22160}, 22164, {f: 3, c: 22166}, {f: 9, c: 22170},
   11168     {f: 2, c: 22180}, 22183, {f: 5, c: 22185}, {f: 3, c: 22192}, 22197,
   11169     {f: 4, c: 22200}, {f: 3, c: 22205}, {f: 2, c: 22211}, {f: 2, c: 22214},
   11170     22219, {f: 4, c: 22221}, {f: 2, c: 22226}, {f: 2, c: 22229},
   11171     {f: 2, c: 22232}, 22236, 22243, {f: 6, c: 22245}, 22252, {f: 2, c: 22254},
   11172     {f: 2, c: 22258}, {f: 3, c: 22262}, {f: 2, c: 22267}, {f: 3, c: 22272},
   11173     22277, 22284, {f: 4, c: 22286}, {f: 2, c: 22292}, 22295, {f: 3, c: 22297},
   11174     {f: 2, c: 22301}, {f: 3, c: 22304}, {f: 4, c: 22308}, 22315,
   11175     {f: 2, c: 22321}, {f: 5, c: 22324}, {f: 2, c: 22332}, 22335, 22337,
   11176     {f: 4, c: 22339}, {f: 2, c: 22344}, 22347, {f: 5, c: 22354},
   11177     {f: 2, c: 22360}, {f: 2, c: 22370}, 22373, 22375, 22380, 22382,
   11178     {f: 3, c: 22384}, {f: 2, c: 22388}, {f: 3, c: 22392}, {f: 5, c: 22397},
   11179     {f: 4, c: 22407}, {f: 5, c: 22413}, {f: 7, c: 22420}, {f: 4, c: 22428},
   11180     22437, 22440, 22442, 22444, {f: 3, c: 22447}, 22451, {f: 3, c: 22453},
   11181     {f: 9, c: 22457}, {f: 7, c: 22468}, {f: 2, c: 22476}, {f: 2, c: 22480},
   11182     22483, {f: 2, c: 22486}, {f: 2, c: 22491}, 22494, {f: 2, c: 22498},
   11183     {f: 8, c: 22501}, 22510, {f: 4, c: 22512}, {f: 2, c: 22517},
   11184     {f: 2, c: 22523}, {f: 2, c: 22526}, 22529, {f: 2, c: 22531},
   11185     {f: 2, c: 22536}, 22540, {f: 3, c: 22542}, {f: 3, c: 22546},
   11186     {f: 2, c: 22551}, {f: 3, c: 22554}, 22559, {f: 2, c: 22562},
   11187     {f: 5, c: 22565}, {f: 4, c: 22571}, {f: 2, c: 22578}, {f: 14, c: 22582},
   11188     {f: 5, c: 22597}, 22606, 22608, 22611, {f: 2, c: 22613}, {f: 5, c: 22617},
   11189     {f: 3, c: 22623}, 22627, {f: 5, c: 22630}, {f: 8, c: 22637},
   11190     {f: 3, c: 22646}, {f: 4, c: 22650}, 22655, 22658, 22660, {f: 3, c: 22662},
   11191     {f: 7, c: 22667}, {f: 5, c: 22676}, 22683, 22685, {f: 8, c: 22688},
   11192     {f: 4, c: 22698}, {f: 4, c: 22703}, {f: 7, c: 22708}, 22717,
   11193     {f: 2, c: 22719}, {f: 3, c: 22722}, 22726, {f: 9, c: 22728}, 22738, 22740,
   11194     {f: 2, c: 22742}, {f: 3, c: 22747}, 22753, 22755, {f: 4, c: 22757}, 22762,
   11195     22765, {f: 2, c: 22769}, {f: 2, c: 22772}, {f: 2, c: 22775},
   11196     {f: 2, c: 22779}, {f: 4, c: 22782}, 22787, {f: 2, c: 22789},
   11197     {f: 2, c: 22792}, [12066, 22794], {f: 2, c: 22795}, 22798,
   11198     {f: 4, c: 22800}, {f: 2, c: 22807}, 22811, {f: 2, c: 22813},
   11199     {f: 2, c: 22816}, 22819, 22822, 22824, 22828, 22832, {f: 2, c: 22834},
   11200     {f: 2, c: 22837}, 22843, 22845, {f: 2, c: 22847}, 22851, {f: 2, c: 22853},
   11201     22858, {f: 2, c: 22860}, 22864, {f: 2, c: 22866}, 22873, {f: 5, c: 22875},
   11202     22881, {f: 2, c: 22883}, {f: 3, c: 22886}, 22891, 22893, {f: 4, c: 22895},
   11203     22901, 22903, {f: 3, c: 22906}, {f: 3, c: 22910}, 22917, 22921,
   11204     {f: 2, c: 22923}, {f: 4, c: 22926}, {f: 2, c: 22932}, 22936,
   11205     {f: 3, c: 22938}, {f: 4, c: 22943}, {f: 2, c: 22950}, {f: 2, c: 22956},
   11206     {f: 2, c: 22960}, {f: 6, c: 22963}, 22970, {f: 2, c: 22972},
   11207     {f: 7, c: 22975}, {f: 3, c: 22983}, {f: 4, c: 22988}, {f: 2, c: 22997},
   11208     23001, 23003, {f: 5, c: 23006}, 23012, {f: 2, c: 23014}, {f: 3, c: 23017},
   11209     {f: 12, c: 23021}, 23034, {f: 3, c: 23036}, 23040, 23042, {f: 2, c: 23050},
   11210     {f: 4, c: 23053}, 23058, {f: 4, c: 23060}, {f: 3, c: 23065},
   11211     {f: 2, c: 23069}, {f: 2, c: 23073}, 23076, {f: 3, c: 23078},
   11212     {f: 7, c: 23082}, 23091, 23093, {f: 5, c: 23095}, {f: 3, c: 23101},
   11213     {f: 4, c: 23106}, {f: 2, c: 23111}, {f: 10, c: 23115}, {f: 4, c: 23126},
   11214     {f: 7, c: 23131}, {f: 3, c: 23139}, {f: 2, c: 23144}, {f: 2, c: 23147},
   11215     {f: 6, c: 23150}, {f: 2, c: 23160}, {f: 4, c: 23163}, {f: 18, c: 23168},
   11216     {f: 7, c: 23187}, {f: 11, c: 23196}, {f: 2, c: 23208}, {f: 7, c: 23211},
   11217     23220, {f: 2, c: 23222}, {f: 4, c: 23225}, {f: 2, c: 23231},
   11218     {f: 6, c: 23235}, {f: 2, c: 23242}, {f: 5, c: 23245}, 23251, 23253,
   11219     {f: 3, c: 23257}, {f: 3, c: 23261}, 23266, {f: 2, c: 23268},
   11220     {f: 2, c: 23271}, 23274, {f: 5, c: 23276}, {f: 3, c: 23282},
   11221     {f: 5, c: 23286}, {f: 4, c: 23292}, {f: 7, c: 23297}, 23306,
   11222     {f: 9, c: 23309}, 23320, {f: 7, c: 23322}, {f: 8, c: 23330},
   11223     {f: 5, c: 23339}, 23345, 23347, {f: 2, c: 23349}, {f: 7, c: 23353},
   11224     {f: 11, c: 23361}, {f: 3, c: 23373}, 23378, 23382, 23390, {f: 2, c: 23392},
   11225     {f: 2, c: 23399}, {f: 3, c: 23405}, 23410, 23412, {f: 2, c: 23414}, 23417,
   11226     {f: 2, c: 23419}, 23422, 23426, 23430, 23434, {f: 2, c: 23437},
   11227     {f: 3, c: 23440}, 23444, 23446, 23455, {f: 3, c: 23463}, {f: 4, c: 23468},
   11228     {f: 2, c: 23473}, 23479, {f: 3, c: 23482}, {f: 2, c: 23488}, 23491,
   11229     {f: 4, c: 23496}, {f: 3, c: 23501}, 23505, {f: 9, c: 23508}, 23520, 23523,
   11230     23530, 23533, 23535, {f: 4, c: 23537}, 23543, {f: 2, c: 23549}, 23552,
   11231     {f: 2, c: 23554}, 23557, 23564, 23568, {f: 2, c: 23570}, 23575, 23577,
   11232     23579, {f: 4, c: 23582}, 23587, 23590, {f: 4, c: 23592}, {f: 4, c: 23597},
   11233     {f: 2, c: 23602}, {f: 2, c: 23605}, {f: 2, c: 23619}, {f: 2, c: 23622},
   11234     {f: 2, c: 23628}, {f: 3, c: 23634}, {f: 3, c: 23638}, {f: 4, c: 23642},
   11235     23647, 23655, {f: 3, c: 23657}, 23661, 23664, {f: 7, c: 23666},
   11236     {f: 4, c: 23675}, 23680, {f: 5, c: 23683}, {f: 3, c: 23689},
   11237     {f: 2, c: 23694}, {f: 2, c: 23698}, 23701, {f: 4, c: 23709},
   11238     {f: 5, c: 23716}, 23722, {f: 3, c: 23726}, 23730, 23732, 23734,
   11239     {f: 4, c: 23737}, 23742, 23744, {f: 2, c: 23746}, {f: 6, c: 23749},
   11240     {f: 6, c: 23756}, {f: 6, c: 23763}, {f: 7, c: 23770}, {f: 2, c: 23778},
   11241     23783, 23785, {f: 2, c: 23787}, {f: 2, c: 23790}, {f: 3, c: 23793}, 23797,
   11242     {f: 4, c: 23799}, 23804, {f: 4, c: 23806}, {f: 2, c: 23812},
   11243     {f: 5, c: 23816}, {f: 5, c: 23823}, 23829, {f: 3, c: 23832},
   11244     {f: 2, c: 23836}, {f: 5, c: 23839}, 23845, 23848, {f: 2, c: 23850},
   11245     {f: 5, c: 23855}, {f: 8, c: 23861}, {f: 8, c: 23871}, {f: 2, c: 23880},
   11246     {f: 3, c: 23885}, {f: 7, c: 23889}, {f: 2, c: 23897}, 23900,
   11247     {f: 11, c: 23902}, 23914, {f: 2, c: 23917}, {f: 4, c: 23920},
   11248     {f: 12, c: 23925}, 23939, {f: 2, c: 23941}, {f: 15, c: 23944}, 23960,
   11249     {f: 3, c: 23962}, {f: 2, c: 23966}, {f: 6, c: 23969}, {f: 15, c: 23976},
   11250     23993, 23995, {f: 8, c: 23997}, {f: 5, c: 24006}, 24012, {f: 4, c: 24014},
   11251     24019, {f: 6, c: 24021}, 24028, {f: 2, c: 24031}, {f: 2, c: 24035}, 24042,
   11252     {f: 2, c: 24044}, {f: 2, c: 24053}, {f: 5, c: 24056}, {f: 2, c: 24063},
   11253     24068, 24071, {f: 3, c: 24073}, {f: 2, c: 24077}, {f: 2, c: 24082}, 24087,
   11254     {f: 7, c: 24094}, {f: 3, c: 24104}, 24108, {f: 2, c: 24111}, 24114,
   11255     {f: 2, c: 24116}, {f: 2, c: 24121}, {f: 2, c: 24126}, 24129,
   11256     {f: 6, c: 24134}, {f: 7, c: 24141}, 24150, {f: 2, c: 24153},
   11257     {f: 2, c: 24156}, 24160, {f: 7, c: 24164}, {f: 5, c: 24173}, 24181, 24183,
   11258     {f: 3, c: 24193}, 24197, {f: 2, c: 24200}, {f: 3, c: 24204}, 24210, 24216,
   11259     24219, 24221, {f: 4, c: 24225}, {f: 3, c: 24232}, 24236, {f: 5, c: 24238},
   11260     24244, {f: 4, c: 24250}, {f: 10, c: 24255}, {f: 6, c: 24267},
   11261     {f: 2, c: 24276}, {f: 4, c: 24279}, {f: 3, c: 24284}, {f: 4, c: 24292},
   11262     24297, 24299, {f: 6, c: 24301}, 24309, {f: 2, c: 24312}, {f: 3, c: 24315},
   11263     {f: 3, c: 24325}, 24329, {f: 3, c: 24332}, 24336, 24338, 24340, 24342,
   11264     {f: 2, c: 24345}, {f: 3, c: 24348}, {f: 4, c: 24353}, 24360,
   11265     {f: 2, c: 24363}, 24366, 24368, 24370, 24372, {f: 3, c: 24374}, 24379,
   11266     {f: 3, c: 24381}, {f: 5, c: 24385}, 24391, {f: 3, c: 24393}, 24397, 24399,
   11267     24401, 24404, {f: 3, c: 24410}, {f: 3, c: 24414}, 24419, 24421,
   11268     {f: 2, c: 24423}, 24427, {f: 2, c: 24430}, 24434, {f: 3, c: 24436}, 24440,
   11269     24442, {f: 3, c: 24445}, 24451, 24454, {f: 3, c: 24461}, {f: 2, c: 24467},
   11270     24470, {f: 2, c: 24474}, 24477, 24479, {f: 6, c: 24482}, {f: 2, c: 24491},
   11271     {f: 6, c: 24495}, 24502, 24504, {f: 2, c: 24506}, {f: 5, c: 24510},
   11272     {f: 2, c: 24519}, {f: 2, c: 24522}, 24526, {f: 3, c: 24531},
   11273     {f: 3, c: 24538}, {f: 2, c: 24542}, {f: 2, c: 24546}, {f: 2, c: 24549},
   11274     {f: 2, c: 24552}, 24556, {f: 2, c: 24559}, {f: 3, c: 24562},
   11275     {f: 2, c: 24566}, {f: 2, c: 24569}, 24572, {f: 3, c: 24583},
   11276     {f: 2, c: 24587}, {f: 2, c: 24592}, 24595, {f: 2, c: 24599}, 24602,
   11277     {f: 2, c: 24606}, {f: 3, c: 24610}, {f: 3, c: 24620}, {f: 5, c: 24624},
   11278     {f: 5, c: 24630}, {f: 2, c: 24637}, 24640, {f: 7, c: 24644}, 24652,
   11279     {f: 2, c: 24654}, 24657, {f: 2, c: 24659}, {f: 3, c: 24662},
   11280     {f: 2, c: 24667}, {f: 4, c: 24670}, {f: 2, c: 24677}, 24686,
   11281     {f: 2, c: 24689}, {f: 2, c: 24692}, 24695, 24702, {f: 3, c: 24704},
   11282     {f: 4, c: 24709}, {f: 2, c: 24714}, {f: 4, c: 24718}, 24723, 24725,
   11283     {f: 3, c: 24727}, 24732, 24734, {f: 2, c: 24737}, {f: 2, c: 24740}, 24743,
   11284     {f: 2, c: 24745}, 24750, 24752, 24755, 24759, {f: 2, c: 24761},
   11285     {f: 8, c: 24765}, {f: 3, c: 24775}, {f: 5, c: 24780}, {f: 3, c: 24786},
   11286     {f: 2, c: 24790}, 24793, 24795, 24798, {f: 4, c: 24802}, 24810, 24821,
   11287     {f: 2, c: 24823}, {f: 4, c: 24828}, {f: 4, c: 24834}, 24839,
   11288     {f: 3, c: 24842}, {f: 5, c: 24848}, {f: 4, c: 24854}, {f: 2, c: 24861},
   11289     {f: 2, c: 24865}, 24869, {f: 3, c: 24872}, {f: 8, c: 24876},
   11290     {f: 2, c: 24885}, {f: 6, c: 24888}, {f: 8, c: 24896}, 24905, 24909,
   11291     {f: 2, c: 24911}, {f: 3, c: 24914}, {f: 2, c: 24918}, 24921,
   11292     {f: 2, c: 24923}, 24926, {f: 2, c: 24928}, {f: 2, c: 24933}, 24937,
   11293     {f: 2, c: 24940}, 24943, {f: 2, c: 24945}, 24948, {f: 10, c: 24952},
   11294     {f: 7, c: 24963}, {f: 2, c: 24972}, 24975, 24979, {f: 5, c: 24981},
   11295     {f: 2, c: 24987}, {f: 6, c: 24990}, {f: 2, c: 24997}, 25002, 25005,
   11296     {f: 3, c: 25007}, {f: 3, c: 25011}, {f: 6, c: 25016}, {f: 3, c: 25023},
   11297     {f: 4, c: 25027}, {f: 4, c: 25037}, 25043, {f: 9, c: 25045},
   11298     {f: 3, c: 25056}, {f: 2, c: 25060}, 25063, {f: 9, c: 25065},
   11299     {f: 2, c: 25075}, 25081, 25083, 25085, {f: 5, c: 25089}, 25097, 25107,
   11300     25113, {f: 3, c: 25116}, 25120, 25123, 25126, {f: 2, c: 25128}, 25131,
   11301     25133, 25135, 25137, 25141, [12094, 25142], {f: 5, c: 25144}, 25154,
   11302     {f: 3, c: 25156}, 25162, {f: 2, c: 25167}, {f: 3, c: 25173},
   11303     {f: 2, c: 25177}, {f: 7, c: 25180}, {f: 2, c: 25188}, 25192,
   11304     {f: 2, c: 25201}, {f: 2, c: 25204}, {f: 2, c: 25207}, {f: 2, c: 25210},
   11305     25213, {f: 3, c: 25217}, {f: 4, c: 25221}, {f: 6, c: 25227}, 25236, 25241,
   11306     {f: 3, c: 25244}, 25251, {f: 2, c: 25254}, {f: 2, c: 25257},
   11307     {f: 4, c: 25261}, {f: 3, c: 25266}, {f: 3, c: 25270}, 25274, 25278,
   11308     {f: 2, c: 25280}, 25283, 25291, 25295, 25297, 25301, {f: 2, c: 25309},
   11309     {f: 2, c: 25312}, 25316, {f: 2, c: 25322}, 25328, 25330, 25333,
   11310     {f: 4, c: 25336}, 25344, {f: 4, c: 25347}, {f: 4, c: 25354},
   11311     {f: 2, c: 25359}, {f: 4, c: 25362}, {f: 3, c: 25367}, 25372,
   11312     {f: 2, c: 25382}, 25385, {f: 3, c: 25388}, {f: 2, c: 25392},
   11313     {f: 6, c: 25395}, {f: 2, c: 25403}, {f: 3, c: 25407}, 25412,
   11314     {f: 2, c: 25415}, 25418, {f: 4, c: 25425}, {f: 8, c: 25430}, 25440,
   11315     {f: 3, c: 25444}, 25450, 25452, {f: 2, c: 25455}, {f: 3, c: 25459},
   11316     {f: 2, c: 25464}, {f: 4, c: 25468}, 25473, {f: 2, c: 25477}, 25483, 25485,
   11317     25489, {f: 3, c: 25491}, 25495, {f: 7, c: 25497}, 25505, 25508, 25510,
   11318     25515, 25519, {f: 2, c: 25521}, {f: 2, c: 25525}, 25529, 25531, 25533,
   11319     25535, {f: 3, c: 25537}, 25541, {f: 2, c: 25543}, {f: 3, c: 25546}, 25553,
   11320     {f: 3, c: 25555}, {f: 3, c: 25559}, {f: 3, c: 25563}, 25567, 25570,
   11321     {f: 5, c: 25572}, {f: 2, c: 25579}, {f: 3, c: 25583}, 25587, 25589, 25591,
   11322     {f: 4, c: 25593}, 25598, {f: 2, c: 25603}, {f: 5, c: 25606}, 25614,
   11323     {f: 2, c: 25617}, {f: 2, c: 25621}, {f: 3, c: 25624}, 25629, 25631,
   11324     {f: 4, c: 25634}, {f: 3, c: 25639}, 25643, {f: 6, c: 25646}, 25653,
   11325     {f: 3, c: 25655}, {f: 2, c: 25659}, 25662, 25664, {f: 2, c: 25666}, 25673,
   11326     {f: 6, c: 25675}, 25683, {f: 3, c: 25685}, {f: 3, c: 25689}, 25693,
   11327     {f: 7, c: 25696}, 25704, {f: 3, c: 25706}, 25710, {f: 3, c: 25712},
   11328     {f: 2, c: 25716}, 25719, {f: 6, c: 25724}, 25731, 25734, {f: 8, c: 25737},
   11329     25748, {f: 2, c: 25751}, {f: 4, c: 25754}, {f: 3, c: 25760},
   11330     {f: 3, c: 25766}, 25770, 25775, 25777, 25780, 25782, 25785, 25789, 25795,
   11331     25798, {f: 2, c: 25800}, 25804, 25807, 25809, 25811, {f: 2, c: 25813},
   11332     25817, {f: 3, c: 25819}, 25823, 25825, 25827, 25829, {f: 5, c: 25831},
   11333     {f: 2, c: 25837}, 25843, {f: 2, c: 25845}, {f: 2, c: 25848}, 25853, 25855,
   11334     {f: 3, c: 25857}, 25861, {f: 2, c: 25863}, {f: 5, c: 25866},
   11335     {f: 2, c: 25872}, 25875, 25877, 25879, 25882, 25884, {f: 4, c: 25886},
   11336     {f: 4, c: 25894}, 25901, {f: 4, c: 25904}, 25911, 25914, {f: 2, c: 25916},
   11337     {f: 5, c: 25920}, {f: 2, c: 25926}, {f: 2, c: 25930}, {f: 2, c: 25933},
   11338     25936, {f: 3, c: 25938}, 25944, 25946, 25948, {f: 3, c: 25951},
   11339     {f: 2, c: 25956}, {f: 4, c: 25959}, {f: 3, c: 25965}, 25969, 25971, 25974,
   11340     {f: 9, c: 25977}, {f: 3, c: 25988}, {f: 3, c: 25992}, {f: 3, c: 25997},
   11341     26002, 26004, 26006, 26008, 26010, {f: 2, c: 26013}, 26016,
   11342     {f: 2, c: 26018}, 26022, 26024, 26026, 26030, {f: 6, c: 26033}, 26040,
   11343     {f: 2, c: 26042}, {f: 3, c: 26046}, 26050, {f: 4, c: 26055}, 26061,
   11344     {f: 2, c: 26064}, {f: 3, c: 26067}, {f: 8, c: 26072}, 26081,
   11345     {f: 2, c: 26083}, {f: 2, c: 26090}, {f: 4, c: 26098}, {f: 2, c: 26104},
   11346     {f: 5, c: 26107}, 26113, {f: 2, c: 26116}, {f: 3, c: 26119}, 26123, 26125,
   11347     {f: 3, c: 26128}, {f: 3, c: 26134}, {f: 3, c: 26138}, 26142,
   11348     {f: 4, c: 26145}, 26150, {f: 4, c: 26153}, 26158, 26160, {f: 2, c: 26162},
   11349     {f: 5, c: 26167}, 26173, {f: 2, c: 26175}, {f: 7, c: 26180},
   11350     {f: 2, c: 26189}, {f: 2, c: 26192}, {f: 2, c: 26200}, {f: 2, c: 26203},
   11351     26206, 26208, {f: 2, c: 26210}, 26213, 26215, {f: 5, c: 26217},
   11352     {f: 3, c: 26225}, 26229, {f: 2, c: 26232}, {f: 3, c: 26235},
   11353     {f: 3, c: 26239}, 26243, {f: 2, c: 26245}, {f: 2, c: 26250},
   11354     {f: 4, c: 26253}, {f: 4, c: 26258}, {f: 5, c: 26264}, {f: 4, c: 26270},
   11355     {f: 4, c: 26275}, {f: 2, c: 26281}, {f: 2, c: 26284}, {f: 5, c: 26287},
   11356     {f: 4, c: 26293}, {f: 4, c: 26298}, {f: 5, c: 26303}, 26309, 26312,
   11357     {f: 12, c: 26314}, {f: 2, c: 26327}, 26330, {f: 2, c: 26334},
   11358     {f: 5, c: 26337}, {f: 2, c: 26343}, {f: 2, c: 26346}, {f: 3, c: 26349},
   11359     26353, {f: 2, c: 26357}, {f: 2, c: 26362}, 26365, {f: 2, c: 26369},
   11360     {f: 4, c: 26372}, 26380, {f: 2, c: 26382}, {f: 3, c: 26385}, 26390,
   11361     {f: 3, c: 26392}, 26396, 26398, {f: 6, c: 26400}, 26409, 26414, 26416,
   11362     {f: 2, c: 26418}, {f: 4, c: 26422}, {f: 2, c: 26427}, {f: 2, c: 26430},
   11363     26433, {f: 2, c: 26436}, 26439, {f: 2, c: 26442}, 26445, 26450,
   11364     {f: 2, c: 26452}, {f: 5, c: 26455}, 26461, {f: 3, c: 26466},
   11365     {f: 2, c: 26470}, {f: 2, c: 26475}, 26478, 26484, 26486, {f: 4, c: 26488},
   11366     26493, 26496, {f: 2, c: 26498}, {f: 2, c: 26501}, 26504, 26506,
   11367     {f: 4, c: 26508}, {f: 4, c: 26513}, 26518, 26521, 26523, {f: 3, c: 26527},
   11368     26532, 26534, 26537, 26540, 26542, {f: 2, c: 26545}, 26548,
   11369     {f: 8, c: 26553}, 26562, {f: 10, c: 26565}, {f: 3, c: 26581}, 26587, 26591,
   11370     26593, {f: 2, c: 26595}, {f: 3, c: 26598}, {f: 2, c: 26602},
   11371     {f: 2, c: 26605}, 26610, {f: 8, c: 26613}, 26622, {f: 4, c: 26625}, 26630,
   11372     26637, 26640, 26642, {f: 2, c: 26644}, {f: 5, c: 26648}, {f: 3, c: 26654},
   11373     {f: 7, c: 26658}, {f: 7, c: 26667}, {f: 3, c: 26676}, {f: 2, c: 26682},
   11374     26687, 26695, 26699, 26701, 26703, 26706, {f: 10, c: 26710}, 26730,
   11375     {f: 8, c: 26732}, 26741, {f: 9, c: 26744}, 26754, 26756, {f: 8, c: 26759},
   11376     {f: 3, c: 26768}, {f: 3, c: 26772}, {f: 4, c: 26777}, 26782,
   11377     {f: 2, c: 26784}, {f: 3, c: 26787}, {f: 4, c: 26793}, 26798,
   11378     {f: 2, c: 26801}, 26804, {f: 10, c: 26806}, 26817, {f: 6, c: 26819}, 26826,
   11379     26828, {f: 4, c: 26830}, {f: 2, c: 26835}, 26841, {f: 4, c: 26843},
   11380     {f: 2, c: 26849}, {f: 3, c: 26852}, {f: 6, c: 26856}, 26863,
   11381     {f: 3, c: 26866}, {f: 3, c: 26870}, 26875, {f: 4, c: 26877},
   11382     {f: 3, c: 26882}, {f: 5, c: 26886}, 26892, 26897, {f: 12, c: 26899},
   11383     {f: 3, c: 26913}, {f: 8, c: 26917}, {f: 2, c: 26926}, {f: 3, c: 26929},
   11384     {f: 4, c: 26933}, {f: 3, c: 26938}, 26942, {f: 2, c: 26944},
   11385     {f: 7, c: 26947}, {f: 8, c: 26955}, {f: 2, c: 26965}, {f: 2, c: 26968},
   11386     {f: 2, c: 26971}, 26975, {f: 2, c: 26977}, {f: 2, c: 26980}, 26983,
   11387     {f: 2, c: 26985}, 26988, {f: 2, c: 26991}, {f: 3, c: 26994}, 26998,
   11388     {f: 2, c: 27002}, {f: 3, c: 27005}, 27009, 27011, 27013, {f: 3, c: 27018},
   11389     {f: 6, c: 27022}, {f: 2, c: 27030}, {f: 2, c: 27033}, {f: 10, c: 27037},
   11390     27049, 27052, {f: 2, c: 27055}, {f: 2, c: 27058}, {f: 2, c: 27061},
   11391     {f: 3, c: 27064}, {f: 3, c: 27068}, 27072, {f: 8, c: 27074}, 27087,
   11392     {f: 3, c: 27089}, {f: 6, c: 27093}, {f: 3, c: 27100}, {f: 6, c: 27105},
   11393     {f: 5, c: 27112}, {f: 4, c: 27118}, {f: 9, c: 27124}, 27134, 27136,
   11394     {f: 2, c: 27139}, {f: 4, c: 27142}, {f: 8, c: 27147}, {f: 3, c: 27156},
   11395     {f: 4, c: 27162}, 27168, 27170, {f: 4, c: 27172}, 27177, {f: 4, c: 27179},
   11396     27184, {f: 3, c: 27186}, {f: 2, c: 27190}, {f: 2, c: 27195},
   11397     {f: 5, c: 27199}, {f: 2, c: 27205}, {f: 2, c: 27209}, {f: 4, c: 27212},
   11398     {f: 7, c: 27217}, 27226, {f: 3, c: 27228}, 27232, {f: 2, c: 27235},
   11399     {f: 11, c: 27238}, {f: 7, c: 27250}, {f: 2, c: 27258}, {f: 3, c: 27261},
   11400     {f: 3, c: 27265}, {f: 4, c: 27269}, {f: 4, c: 27274}, 27279,
   11401     {f: 2, c: 27282}, {f: 2, c: 27285}, {f: 4, c: 27288}, {f: 3, c: 27293},
   11402     27297, {f: 5, c: 27300}, 27306, {f: 2, c: 27309}, {f: 3, c: 27312},
   11403     {f: 4, c: 27316}, {f: 2, c: 27321}, {f: 7, c: 27324}, {f: 15, c: 27332},
   11404     {f: 6, c: 27348}, 27356, {f: 7, c: 27360}, 27369, 27371, {f: 6, c: 27373},
   11405     {f: 4, c: 27380}, {f: 2, c: 27385}, {f: 8, c: 27388}, {f: 5, c: 27397},
   11406     {f: 4, c: 27403}, {f: 2, c: 27408}, {f: 3, c: 27411}, {f: 7, c: 27415},
   11407     27423, {f: 2, c: 27429}, {f: 10, c: 27432}, {f: 4, c: 27443}, 27448,
   11408     {f: 2, c: 27451}, {f: 4, c: 27455}, {f: 2, c: 27460}, 27464,
   11409     {f: 2, c: 27466}, {f: 3, c: 27469}, {f: 8, c: 27473}, {f: 5, c: 27482},
   11410     27488, {f: 2, c: 27496}, {f: 7, c: 27499}, {f: 4, c: 27507}, 27514,
   11411     {f: 4, c: 27517}, 27525, 27528, 27532, {f: 4, c: 27534}, {f: 2, c: 27540},
   11412     27543, 27545, {f: 2, c: 27548}, {f: 2, c: 27551}, {f: 2, c: 27554},
   11413     {f: 5, c: 27557}, {f: 2, c: 27564}, {f: 2, c: 27568}, 27574,
   11414     {f: 2, c: 27576}, {f: 3, c: 27580}, 27584, {f: 2, c: 27587},
   11415     {f: 4, c: 27591}, 27596, 27598, {f: 2, c: 27600}, 27608, 27610,
   11416     {f: 5, c: 27612}, {f: 8, c: 27618}, {f: 3, c: 27628}, {f: 3, c: 27632},
   11417     27636, {f: 3, c: 27638}, {f: 3, c: 27642}, 27646, {f: 5, c: 27648},
   11418     {f: 3, c: 27657}, 27662, 27666, 27671, {f: 3, c: 27676}, 27680, 27685,
   11419     27693, 27697, 27699, {f: 2, c: 27702}, {f: 4, c: 27705}, {f: 2, c: 27710},
   11420     {f: 3, c: 27715}, 27720, {f: 5, c: 27723}, {f: 3, c: 27729}, 27734,
   11421     {f: 3, c: 27736}, {f: 2, c: 27746}, {f: 3, c: 27749}, {f: 5, c: 27755},
   11422     27761, 27763, 27765, {f: 2, c: 27767}, {f: 3, c: 27770}, {f: 2, c: 27775},
   11423     27780, 27783, {f: 2, c: 27786}, {f: 2, c: 27789}, {f: 2, c: 27793},
   11424     {f: 4, c: 27797}, 27802, {f: 3, c: 27804}, 27808, 27810, 27816, 27820,
   11425     {f: 2, c: 27823}, {f: 4, c: 27828}, 27834, {f: 4, c: 27840},
   11426     {f: 3, c: 27846}, 27851, {f: 3, c: 27853}, {f: 2, c: 27857},
   11427     {f: 3, c: 27864}, {f: 2, c: 27868}, 27871, 27876, {f: 2, c: 27878}, 27881,
   11428     {f: 2, c: 27884}, 27890, 27892, 27897, {f: 2, c: 27903}, {f: 2, c: 27906},
   11429     {f: 2, c: 27909}, {f: 3, c: 27912}, 27917, {f: 3, c: 27919},
   11430     {f: 4, c: 27923}, 27928, {f: 2, c: 27932}, {f: 6, c: 27935}, 27942,
   11431     {f: 2, c: 27944}, {f: 2, c: 27948}, {f: 2, c: 27951}, 27956,
   11432     {f: 3, c: 27958}, 27962, {f: 2, c: 27967}, 27970, 27972, 27977, 27980,
   11433     27984, {f: 4, c: 27989}, 27995, 27997, 27999, {f: 2, c: 28001},
   11434     {f: 2, c: 28004}, {f: 2, c: 28007}, {f: 3, c: 28011}, {f: 4, c: 28016},
   11435     {f: 2, c: 28021}, {f: 2, c: 28026}, {f: 5, c: 28029}, {f: 2, c: 28035},
   11436     28038, {f: 2, c: 28042}, 28045, {f: 2, c: 28047}, 28050, {f: 5, c: 28054},
   11437     28060, 28066, 28069, {f: 2, c: 28076}, {f: 2, c: 28080}, {f: 2, c: 28083},
   11438     {f: 2, c: 28086}, {f: 6, c: 28089}, {f: 3, c: 28097}, {f: 3, c: 28104},
   11439     {f: 4, c: 28109}, {f: 4, c: 28114}, 28119, {f: 3, c: 28122}, 28127,
   11440     {f: 2, c: 28130}, 28133, {f: 3, c: 28135}, 28141, {f: 2, c: 28143}, 28146,
   11441     28148, 28152, {f: 8, c: 28157}, {f: 4, c: 28166}, 28171, 28175,
   11442     {f: 2, c: 28178}, 28181, {f: 2, c: 28184}, {f: 2, c: 28187},
   11443     {f: 2, c: 28190}, 28194, {f: 2, c: 28199}, 28202, 28206, {f: 2, c: 28208},
   11444     28211, {f: 3, c: 28213}, 28217, {f: 3, c: 28219}, {f: 4, c: 28223},
   11445     {f: 8, c: 28229}, {f: 4, c: 28239}, 28245, 28247, {f: 2, c: 28249},
   11446     {f: 2, c: 28252}, {f: 11, c: 28256}, {f: 2, c: 28268}, {f: 14, c: 28272},
   11447     {f: 3, c: 28288}, 28292, {f: 2, c: 28295}, {f: 5, c: 28298},
   11448     {f: 5, c: 28305}, 28311, {f: 3, c: 28313}, 28318, {f: 2, c: 28320},
   11449     {f: 2, c: 28323}, 28326, {f: 2, c: 28328}, {f: 4, c: 28331}, 28336, 28339,
   11450     28341, {f: 2, c: 28344}, 28348, {f: 3, c: 28350}, 28355, 28358,
   11451     {f: 3, c: 28360}, 28365, 28368, 28370, 28374, {f: 2, c: 28376},
   11452     {f: 3, c: 28379}, 28387, 28391, {f: 2, c: 28394}, {f: 2, c: 28397},
   11453     {f: 2, c: 28400}, 28403, {f: 2, c: 28405}, {f: 5, c: 28410}, 28416,
   11454     {f: 3, c: 28419}, {f: 2, c: 28423}, {f: 5, c: 28426}, {f: 3, c: 28432},
   11455     {f: 4, c: 28438}, {f: 5, c: 28443}, 28449, {f: 4, c: 28453}, 28462, 28464,
   11456     {f: 2, c: 28468}, 28471, {f: 5, c: 28473}, 28480, {f: 4, c: 28482},
   11457     {f: 3, c: 28488}, 28492, {f: 3, c: 28494}, {f: 2, c: 28498},
   11458     {f: 3, c: 28501}, {f: 2, c: 28506}, 28509, {f: 3, c: 28511}, 28515, 28517,
   11459     {f: 6, c: 28519}, 28529, 28531, {f: 2, c: 28533}, 28537, 28539,
   11460     {f: 2, c: 28541}, {f: 3, c: 28545}, 28549, {f: 2, c: 28554},
   11461     {f: 8, c: 28559}, {f: 4, c: 28568}, {f: 3, c: 28573}, {f: 2, c: 28578},
   11462     {f: 2, c: 28581}, 28584, {f: 4, c: 28586}, {f: 2, c: 28591}, 28594,
   11463     {f: 2, c: 28596}, {f: 2, c: 28599}, {f: 6, c: 28602}, {f: 5, c: 28612},
   11464     {f: 7, c: 28618}, {f: 2, c: 28627}, {f: 2, c: 28630}, {f: 2, c: 28633},
   11465     {f: 2, c: 28636}, {f: 2, c: 28642}, {f: 6, c: 28645}, {f: 2, c: 28652},
   11466     {f: 8, c: 28658}, 28667, 28669, {f: 6, c: 28671}, {f: 2, c: 28679}, 28682,
   11467     {f: 3, c: 28684}, 28688, {f: 3, c: 28690}, {f: 2, c: 28694}, 28697, 28700,
   11468     28702, {f: 2, c: 28705}, {f: 3, c: 28708}, {f: 7, c: 28713}, 28721,
   11469     {f: 2, c: 28723}, {f: 3, c: 28726}, {f: 4, c: 28730}, {f: 4, c: 28735},
   11470     {f: 7, c: 28741}, {f: 2, c: 28749}, 28752, {f: 3, c: 28754},
   11471     {f: 2, c: 28758}, {f: 4, c: 28761}, {f: 4, c: 28767}, {f: 2, c: 28773},
   11472     {f: 3, c: 28776}, 28782, {f: 4, c: 28785}, 28791, {f: 3, c: 28793}, 28797,
   11473     {f: 4, c: 28801}, {f: 3, c: 28806}, {f: 3, c: 28811}, {f: 3, c: 28815},
   11474     28819, {f: 2, c: 28823}, {f: 2, c: 28826}, {f: 13, c: 28830}, 28848, 28850,
   11475     {f: 3, c: 28852}, 28858, {f: 2, c: 28862}, {f: 4, c: 28868}, 28873,
   11476     {f: 4, c: 28875}, {f: 8, c: 28880}, 28890, {f: 3, c: 28892},
   11477     {f: 4, c: 28896}, 28901, 28906, 28910, {f: 4, c: 28912}, {f: 2, c: 28917},
   11478     28920, {f: 3, c: 28922}, {f: 11, c: 28926}, {f: 5, c: 28939},
   11479     {f: 2, c: 28945}, 28948, 28951, {f: 6, c: 28955}, {f: 4, c: 28962},
   11480     {f: 8, c: 28967}, {f: 4, c: 28978}, {f: 14, c: 28983}, {f: 3, c: 28998},
   11481     29003, 29005, {f: 3, c: 29007}, {f: 9, c: 29011}, 29021, {f: 3, c: 29023},
   11482     29027, 29029, {f: 2, c: 29034}, 29037, {f: 3, c: 29039}, {f: 4, c: 29044},
   11483     29049, {f: 2, c: 29051}, {f: 6, c: 29054}, {f: 5, c: 29061},
   11484     {f: 4, c: 29067}, {f: 2, c: 29072}, 29075, {f: 2, c: 29077},
   11485     {f: 5, c: 29082}, {f: 7, c: 29089}, {f: 3, c: 29097}, {f: 4, c: 29101},
   11486     29106, 29108, {f: 3, c: 29110}, {f: 4, c: 29114}, {f: 2, c: 29119}, 29122,
   11487     {f: 4, c: 29124}, {f: 5, c: 29129}, {f: 3, c: 29135}, 29139,
   11488     {f: 3, c: 29142}, {f: 2, c: 29146}, {f: 2, c: 29149}, {f: 4, c: 29153},
   11489     {f: 5, c: 29160}, {f: 5, c: 29167}, {f: 4, c: 29173}, {f: 2, c: 29178},
   11490     29181, {f: 7, c: 29183}, {f: 6, c: 29191}, {f: 2, c: 29198},
   11491     {f: 10, c: 29201}, 29212, {f: 10, c: 29214}, 29225, 29227,
   11492     {f: 3, c: 29229}, {f: 2, c: 29235}, 29244, {f: 7, c: 29248},
   11493     {f: 3, c: 29257}, {f: 4, c: 29262}, {f: 3, c: 29267}, 29271, 29274, 29276,
   11494     29278, 29280, {f: 3, c: 29283}, 29288, {f: 4, c: 29290}, {f: 2, c: 29296},
   11495     {f: 2, c: 29299}, {f: 3, c: 29302}, {f: 2, c: 29307}, {f: 2, c: 29314},
   11496     {f: 5, c: 29317}, 29324, 29326, {f: 2, c: 29328}, {f: 3, c: 29331},
   11497     {f: 8, c: 29335}, {f: 2, c: 29344}, {f: 4, c: 29347}, {f: 4, c: 29352},
   11498     29358, {f: 3, c: 29361}, 29365, {f: 6, c: 29370}, {f: 3, c: 29381},
   11499     {f: 4, c: 29385}, 29391, 29393, {f: 4, c: 29395}, 29400, {f: 4, c: 29402},
   11500     29407, {f: 6, c: 29410}, {f: 2, c: 29418}, {f: 2, c: 29429},
   11501     {f: 3, c: 29438}, 29442, {f: 6, c: 29444}, {f: 3, c: 29451},
   11502     {f: 4, c: 29455}, 29460, {f: 3, c: 29464}, {f: 2, c: 29471},
   11503     {f: 2, c: 29475}, {f: 3, c: 29478}, 29485, {f: 2, c: 29487},
   11504     {f: 2, c: 29490}, 29493, 29498, {f: 2, c: 29500}, 29504, {f: 2, c: 29506},
   11505     {f: 7, c: 29510}, {f: 2, c: 29518}, 29521, {f: 4, c: 29523},
   11506     {f: 8, c: 29528}, {f: 7, c: 29537}, 29545, 29550, 29553, {f: 2, c: 29555},
   11507     29558, 29561, 29565, 29567, {f: 3, c: 29569}, {f: 2, c: 29573}, 29576,
   11508     29578, {f: 2, c: 29580}, {f: 2, c: 29583}, {f: 4, c: 29586},
   11509     {f: 4, c: 29591}, {f: 3, c: 29596}, {f: 2, c: 29600}, {f: 6, c: 29603},
   11510     29610, {f: 2, c: 29612}, 29617, {f: 3, c: 29620}, {f: 2, c: 29624},
   11511     {f: 4, c: 29628}, 29633, {f: 5, c: 29635}, {f: 2, c: 29643}, 29646,
   11512     {f: 7, c: 29650}, {f: 4, c: 29658}, 29663, {f: 4, c: 29665}, 29670, 29672,
   11513     {f: 3, c: 29674}, {f: 4, c: 29678}, {f: 11, c: 29683}, {f: 4, c: 29695},
   11514     29700, {f: 2, c: 29703}, {f: 4, c: 29707}, {f: 9, c: 29713},
   11515     {f: 6, c: 29724}, {f: 2, c: 29731}, 29735, 29737, 29739, 29741, 29743,
   11516     {f: 2, c: 29745}, {f: 5, c: 29751}, {f: 2, c: 29757}, 29760,
   11517     {f: 9, c: 29762}, {f: 9, c: 29772}, 29782, 29784, 29789, {f: 3, c: 29792},
   11518     {f: 5, c: 29796}, {f: 2, c: 29803}, {f: 2, c: 29806}, {f: 5, c: 29809},
   11519     {f: 6, c: 29816}, 29823, 29826, {f: 3, c: 29828}, 29832, 29834,
   11520     {f: 2, c: 29836}, 29839, {f: 11, c: 29841}, 29853, {f: 4, c: 29855},
   11521     {f: 2, c: 29860}, {f: 6, c: 29866}, {f: 9, c: 29873}, {f: 2, c: 29883},
   11522     {f: 12, c: 29886}, {f: 4, c: 29899}, {f: 2, c: 29904}, 29907,
   11523     {f: 5, c: 29909}, 29915, 29917, 29919, 29921, 29925, {f: 7, c: 29927},
   11524     {f: 4, c: 29936}, 29941, {f: 7, c: 29944}, {f: 4, c: 29952},
   11525     {f: 7, c: 29957}, 29966, 29968, 29970, {f: 4, c: 29972}, 29979,
   11526     {f: 2, c: 29981}, {f: 3, c: 29984}, 29988, {f: 2, c: 29990}, 29994, 29998,
   11527     30004, 30006, 30009, {f: 2, c: 30012}, 30015, {f: 4, c: 30017},
   11528     {f: 2, c: 30022}, {f: 2, c: 30025}, 30029, {f: 4, c: 30032},
   11529     {f: 4, c: 30037}, {f: 4, c: 30046}, {f: 2, c: 30051}, {f: 3, c: 30055},
   11530     {f: 6, c: 30060}, 30067, 30069, 30071, {f: 5, c: 30074}, {f: 3, c: 30080},
   11531     {f: 2, c: 30084}, {f: 3, c: 30088}, {f: 3, c: 30092}, 30096, 30099, 30101,
   11532     30104, {f: 2, c: 30107}, 30110, 30114, {f: 5, c: 30118}, 30125,
   11533     {f: 2, c: 30134}, {f: 2, c: 30138}, {f: 3, c: 30143}, 30150,
   11534     {f: 2, c: 30155}, {f: 4, c: 30158}, 30163, 30167, 30170, {f: 2, c: 30172},
   11535     {f: 3, c: 30175}, 30181, 30185, {f: 4, c: 30188}, {f: 2, c: 30194},
   11536     {f: 4, c: 30197}, {f: 2, c: 30202}, {f: 2, c: 30205}, 30212,
   11537     {f: 4, c: 30214}, {f: 2, c: 30222}, {f: 4, c: 30225}, 30230, 30234,
   11538     {f: 2, c: 30236}, 30243, 30248, 30252, {f: 2, c: 30254}, {f: 2, c: 30257},
   11539     {f: 2, c: 30262}, {f: 2, c: 30265}, 30269, 30273, {f: 2, c: 30276}, 30280,
   11540     {f: 2, c: 30282}, {f: 6, c: 30286}, 30293, 30295, {f: 3, c: 30297}, 30301,
   11541     {f: 2, c: 30304}, 30310, 30312, 30314, {f: 3, c: 30323}, [12136, 30326],
   11542     30327, {f: 2, c: 30329}, {f: 3, c: 30335}, 30339, 30341, {f: 2, c: 30345},
   11543     {f: 2, c: 30348}, {f: 2, c: 30351}, 30354, {f: 2, c: 30356},
   11544     {f: 2, c: 30359}, {f: 9, c: 30363}, {f: 9, c: 30373}, {f: 2, c: 30383},
   11545     30387, {f: 3, c: 30389}, 30393, {f: 4, c: 30395}, {f: 2, c: 30400},
   11546     {f: 2, c: 30403}, 30407, 30409, {f: 2, c: 30411}, 30419, 30421,
   11547     {f: 2, c: 30425}, {f: 2, c: 30428}, 30432, 30434, 30438, {f: 6, c: 30440},
   11548     30448, 30451, {f: 3, c: 30453}, {f: 2, c: 30458}, 30461, {f: 2, c: 30463},
   11549     {f: 2, c: 30466}, {f: 2, c: 30469}, 30474, 30476, {f: 11, c: 30478},
   11550     {f: 4, c: 30491}, 30497, {f: 3, c: 30499}, 30503, {f: 3, c: 30506}, 30510,
   11551     {f: 5, c: 30512}, 30521, 30523, {f: 3, c: 30525}, 30530, {f: 3, c: 30532},
   11552     {f: 7, c: 30536}, {f: 8, c: 30546}, {f: 2, c: 30556}, {f: 2, c: 30559},
   11553     30564, 30567, {f: 2, c: 30569}, {f: 12, c: 30573}, {f: 3, c: 30586},
   11554     {f: 3, c: 30593}, {f: 6, c: 30598}, {f: 2, c: 30607}, {f: 5, c: 30611},
   11555     {f: 5, c: 30617}, 30625, {f: 2, c: 30627}, 30630, 30632, 30635,
   11556     {f: 2, c: 30638}, {f: 2, c: 30641}, 30644, {f: 5, c: 30646}, 30654,
   11557     {f: 7, c: 30656}, {f: 5, c: 30664}, {f: 9, c: 30670}, {f: 2, c: 30680},
   11558     {f: 5, c: 30685}, 30692, 30694, 30696, 30698, {f: 3, c: 30704},
   11559     {f: 2, c: 30708}, 30711, {f: 4, c: 30713}, {f: 6, c: 30723},
   11560     {f: 2, c: 30730}, {f: 3, c: 30734}, 30739, 30741, 30745, 30747, 30750,
   11561     {f: 3, c: 30752}, 30756, 30760, {f: 2, c: 30762}, {f: 2, c: 30766},
   11562     {f: 3, c: 30769}, {f: 2, c: 30773}, 30781, 30783, {f: 2, c: 30785}, 30788,
   11563     30790, {f: 4, c: 30792}, 30797, 30799, 30801, {f: 2, c: 30803},
   11564     {f: 5, c: 30808}, {f: 6, c: 30814}, {f: 3, c: 30821}, 30825,
   11565     {f: 7, c: 30832}, {f: 4, c: 30840}, {f: 10, c: 30845}, 30856,
   11566     {f: 2, c: 30858}, {f: 2, c: 30863}, 30866, {f: 3, c: 30868}, 30873,
   11567     {f: 2, c: 30877}, 30880, 30882, 30884, 30886, 30888, {f: 3, c: 30890},
   11568     {f: 2, c: 30894}, {f: 3, c: 30901}, 30907, 30909, {f: 2, c: 30911},
   11569     {f: 3, c: 30914}, {f: 3, c: 30918}, {f: 4, c: 30924}, {f: 3, c: 30929},
   11570     {f: 3, c: 30934}, {f: 8, c: 30939}, {f: 3, c: 30948}, {f: 3, c: 30953},
   11571     {f: 2, c: 30957}, {f: 2, c: 30960}, 30963, {f: 2, c: 30965},
   11572     {f: 2, c: 30968}, {f: 2, c: 30971}, {f: 3, c: 30974}, {f: 3, c: 30978},
   11573     {f: 8, c: 30982}, {f: 4, c: 30991}, {f: 5, c: 30996}, {f: 4, c: 31002},
   11574     {f: 5, c: 31007}, 31013, {f: 3, c: 31015}, {f: 4, c: 31021},
   11575     {f: 2, c: 31026}, {f: 5, c: 31029}, 31037, 31039, {f: 4, c: 31042}, 31047,
   11576     {f: 9, c: 31050}, {f: 2, c: 31060}, {f: 2, c: 31064}, 31073,
   11577     {f: 2, c: 31075}, 31078, {f: 4, c: 31081}, 31086, {f: 7, c: 31088}, 31097,
   11578     {f: 5, c: 31099}, {f: 2, c: 31106}, {f: 4, c: 31110}, {f: 2, c: 31115},
   11579     {f: 10, c: 31120}, {f: 11, c: 31131}, {f: 2, c: 31144}, {f: 3, c: 31147},
   11580     31151, 31154, {f: 4, c: 31156}, [12145, 31160], 31164, 31167, 31170,
   11581     {f: 2, c: 31172}, {f: 2, c: 31175}, 31178, 31180, {f: 3, c: 31182},
   11582     {f: 2, c: 31187}, {f: 2, c: 31190}, {f: 6, c: 31193}, {f: 3, c: 31200},
   11583     31205, 31208, 31210, 31212, 31214, {f: 7, c: 31217}, {f: 2, c: 31225},
   11584     31228, {f: 2, c: 31230}, 31233, {f: 2, c: 31236}, {f: 4, c: 31239}, 31244,
   11585     {f: 5, c: 31247}, {f: 2, c: 31253}, {f: 2, c: 31256}, {f: 3, c: 31259},
   11586     31263, {f: 2, c: 31265}, {f: 10, c: 31268}, {f: 2, c: 31279}, 31282,
   11587     {f: 3, c: 31284}, 31288, 31290, 31294, {f: 5, c: 31297}, {f: 5, c: 31303},
   11588     {f: 2, c: 31311}, {f: 5, c: 31314}, {f: 9, c: 31320}, {f: 6, c: 31331},
   11589     31338, {f: 4, c: 31340}, {f: 3, c: 31345}, 31349, {f: 4, c: 31355}, 31362,
   11590     31365, 31367, {f: 4, c: 31369}, {f: 3, c: 31374}, {f: 2, c: 31379},
   11591     {f: 3, c: 31385}, 31390, {f: 4, c: 31393}, 31399, 31403, {f: 4, c: 31407},
   11592     {f: 2, c: 31412}, {f: 3, c: 31415}, {f: 4, c: 31419}, {f: 4, c: 31424},
   11593     31430, 31433, {f: 10, c: 31436}, {f: 2, c: 31447}, {f: 4, c: 31450},
   11594     {f: 2, c: 31457}, 31460, {f: 3, c: 31463}, {f: 2, c: 31467}, 31470,
   11595     {f: 6, c: 31472}, {f: 2, c: 31479}, {f: 2, c: 31483}, 31486,
   11596     {f: 3, c: 31488}, 31493, 31495, 31497, {f: 3, c: 31500}, 31504,
   11597     {f: 2, c: 31506}, {f: 3, c: 31510}, 31514, {f: 2, c: 31516}, 31519,
   11598     {f: 3, c: 31521}, 31527, 31529, 31533, {f: 2, c: 31535}, 31538,
   11599     {f: 4, c: 31540}, 31545, 31547, 31549, {f: 6, c: 31551}, 31560, 31562,
   11600     {f: 2, c: 31565}, 31571, 31573, 31575, 31577, 31580, {f: 2, c: 31582},
   11601     31585, {f: 4, c: 31587}, {f: 6, c: 31592}, {f: 2, c: 31599},
   11602     {f: 2, c: 31603}, 31606, 31608, 31610, {f: 2, c: 31612}, 31615,
   11603     {f: 4, c: 31617}, {f: 5, c: 31622}, 31628, {f: 2, c: 31630},
   11604     {f: 3, c: 31633}, 31638, {f: 4, c: 31640}, {f: 3, c: 31646},
   11605     {f: 3, c: 31651}, {f: 3, c: 31662}, {f: 2, c: 31666}, {f: 3, c: 31669},
   11606     {f: 7, c: 31673}, {f: 2, c: 31682}, 31685, 31688, 31690, {f: 4, c: 31693},
   11607     31698, {f: 5, c: 31700}, {f: 2, c: 31707}, {f: 3, c: 31710},
   11608     {f: 2, c: 31714}, {f: 2, c: 31719}, {f: 3, c: 31723}, {f: 2, c: 31727},
   11609     31730, {f: 3, c: 31732}, {f: 4, c: 31736}, 31741, 31743, {f: 6, c: 31745},
   11610     {f: 3, c: 31752}, 31758, {f: 6, c: 31760}, {f: 7, c: 31767}, 31776, 31778,
   11611     {f: 2, c: 31780}, {f: 2, c: 31784}, {f: 12, c: 31788}, {f: 4, c: 31801},
   11612     31810, {f: 8, c: 31812}, {f: 14, c: 31822}, {f: 2, c: 31837},
   11613     {f: 3, c: 31841}, {f: 4, c: 31845}, 31851, 31853, {f: 3, c: 31855},
   11614     {f: 6, c: 31861}, {f: 11, c: 31870}, {f: 7, c: 31882}, {f: 2, c: 31891},
   11615     31894, {f: 3, c: 31897}, {f: 2, c: 31904}, 31907, {f: 4, c: 31910},
   11616     {f: 3, c: 31915}, {f: 2, c: 31919}, {f: 5, c: 31924}, {f: 2, c: 31930},
   11617     {f: 2, c: 31935}, {f: 3, c: 31938}, 31942, 31945, 31947, {f: 7, c: 31950},
   11618     31960, {f: 2, c: 31962}, {f: 6, c: 31969}, {f: 6, c: 31977}, 31985, 31987,
   11619     31989, 31991, 31994, {f: 2, c: 31996}, 31999, 32001, 32003, 32012,
   11620     {f: 2, c: 32014}, {f: 2, c: 32017}, 32022, 32024, {f: 3, c: 32029},
   11621     {f: 4, c: 32035}, {f: 3, c: 32040}, {f: 3, c: 32044}, {f: 5, c: 32052},
   11622     32059, {f: 2, c: 32061}, 32065, 32067, 32069, {f: 7, c: 32071}, 32079,
   11623     {f: 12, c: 32081}, {f: 2, c: 32095}, {f: 3, c: 32099}, 32103,
   11624     {f: 5, c: 32105}, {f: 2, c: 32111}, {f: 2, c: 32116}, 32120,
   11625     {f: 7, c: 32122}, 32130, {f: 2, c: 32132}, 32135, {f: 5, c: 32138},
   11626     {f: 3, c: 32144}, {f: 8, c: 32148}, 32157, {f: 3, c: 32159},
   11627     {f: 2, c: 32164}, {f: 4, c: 32167}, 32175, {f: 3, c: 32181}, 32188,
   11628     {f: 4, c: 32192}, {f: 2, c: 32197}, {f: 2, c: 32200}, {f: 5, c: 32204},
   11629     32211, {f: 2, c: 32213}, {f: 3, c: 32218}, 32223, 32226, {f: 2, c: 32228},
   11630     32231, {f: 2, c: 32234}, {f: 2, c: 32237}, 32240, 32243, 32245,
   11631     {f: 2, c: 32247}, 32250, {f: 12, c: 32252}, {f: 4, c: 32268},
   11632     {f: 9, c: 32274}, 32284, {f: 3, c: 32288}, {f: 3, c: 32292},
   11633     {f: 3, c: 32296}, 32300, {f: 2, c: 32303}, 32307, 32312, 32314, 32316,
   11634     {f: 2, c: 32319}, {f: 3, c: 32322}, {f: 10, c: 32328}, 32339,
   11635     {f: 4, c: 32342}, {f: 3, c: 32347}, {f: 3, c: 32351}, {f: 6, c: 32355},
   11636     32364, {f: 2, c: 32369}, {f: 5, c: 32372}, {f: 2, c: 32378},
   11637     {f: 3, c: 32383}, {f: 5, c: 32387}, 32393, 32395, 32398, {f: 3, c: 32400},
   11638     32405, 32407, {f: 2, c: 32409}, {f: 2, c: 32413}, 32430, 32436,
   11639     {f: 2, c: 32443}, 32470, 32484, 32492, 32505, 32522, 32528, 32542, 32567,
   11640     32569, {f: 7, c: 32571}, 32579, {f: 6, c: 32582}, 32589, 32591,
   11641     {f: 2, c: 32594}, 32598, 32601, {f: 4, c: 32603}, 32608, {f: 5, c: 32611},
   11642     {f: 3, c: 32619}, 32623, 32627, {f: 2, c: 32629}, 32632, {f: 4, c: 32634},
   11643     {f: 2, c: 32639}, {f: 3, c: 32642}, 32647, 32649, 32651, 32653,
   11644     {f: 5, c: 32655}, {f: 5, c: 32661}, {f: 2, c: 32667}, 32672,
   11645     {f: 2, c: 32674}, 32678, 32680, {f: 5, c: 32682}, 32689, {f: 5, c: 32691},
   11646     {f: 2, c: 32698}, 32702, 32704, {f: 3, c: 32706}, {f: 4, c: 32710}, 32715,
   11647     32717, {f: 3, c: 32719}, 32723, {f: 2, c: 32726}, {f: 6, c: 32729},
   11648     {f: 3, c: 32738}, {f: 2, c: 32743}, {f: 4, c: 32746}, 32751, 32754,
   11649     {f: 5, c: 32756}, 32762, {f: 3, c: 32765}, 32770, {f: 4, c: 32775},
   11650     {f: 2, c: 32782}, 32785, 32787, {f: 2, c: 32794}, {f: 3, c: 32797}, 32801,
   11651     {f: 2, c: 32803}, 32811, 32813, {f: 2, c: 32815}, 32818, 32820,
   11652     {f: 2, c: 32825}, 32828, 32830, {f: 2, c: 32832}, {f: 2, c: 32836},
   11653     {f: 3, c: 32839}, {f: 4, c: 32846}, 32851, 32853, 32855, 32857,
   11654     {f: 3, c: 32859}, {f: 10, c: 32863}, {f: 4, c: 32875}, 32884, 32888,
   11655     {f: 3, c: 32890}, {f: 2, c: 32897}, 32904, 32906, {f: 6, c: 32909},
   11656     {f: 2, c: 32916}, 32919, 32921, 32926, 32931, {f: 3, c: 32934}, 32940,
   11657     32944, 32947, {f: 2, c: 32949}, {f: 2, c: 32952}, 32955, 32965,
   11658     {f: 5, c: 32967}, {f: 7, c: 32975}, 32984, {f: 2, c: 32991},
   11659     {f: 2, c: 32994}, 32998, 33006, 33013, 33015, 33017, 33019,
   11660     {f: 4, c: 33022}, {f: 2, c: 33027}, {f: 2, c: 33031}, {f: 2, c: 33035},
   11661     33045, 33047, 33049, {f: 2, c: 33052}, {f: 13, c: 33055}, {f: 2, c: 33069},
   11662     33072, {f: 3, c: 33075}, 33079, {f: 4, c: 33082}, {f: 7, c: 33087}, 33095,
   11663     33097, 33101, 33103, 33106, {f: 2, c: 33111}, {f: 5, c: 33115},
   11664     {f: 3, c: 33122}, 33128, 33130, 33132, 33135, {f: 2, c: 33138},
   11665     {f: 3, c: 33141}, 33153, {f: 5, c: 33155}, 33161, {f: 4, c: 33163}, 33168,
   11666     {f: 6, c: 33170}, 33177, {f: 2, c: 33182}, {f: 2, c: 33185},
   11667     {f: 2, c: 33188}, 33191, {f: 8, c: 33195}, {f: 6, c: 33204}, 33212,
   11668     {f: 2, c: 33220}, {f: 2, c: 33223}, 33227, 33230, {f: 8, c: 33232}, 33241,
   11669     {f: 4, c: 33243}, {f: 2, c: 33249}, {f: 3, c: 33252}, 33257, 33259,
   11670     {f: 5, c: 33262}, {f: 5, c: 33269}, 33277, 33279, 33283, 33291,
   11671     {f: 2, c: 33294}, 33297, 33299, {f: 6, c: 33301}, 33309, 33312,
   11672     {f: 4, c: 33316}, 33321, 33326, 33330, 33338, {f: 2, c: 33340},
   11673     {f: 5, c: 33343}, {f: 2, c: 33349}, 33352, 33354, {f: 3, c: 33356},
   11674     {f: 8, c: 33360}, {f: 4, c: 33371}, {f: 4, c: 33376}, 33381, 33383,
   11675     {f: 2, c: 33385}, {f: 2, c: 33388}, {f: 2, c: 33397}, [12171, 33400],
   11676     {f: 2, c: 33403}, {f: 2, c: 33408}, 33411, {f: 3, c: 33413}, 33417, 33420,
   11677     33424, {f: 4, c: 33427}, {f: 2, c: 33434}, 33438, 33440, {f: 2, c: 33442},
   11678     33447, 33458, {f: 2, c: 33461}, 33466, 33468, {f: 2, c: 33471},
   11679     {f: 2, c: 33474}, {f: 2, c: 33477}, 33481, 33488, 33494, {f: 2, c: 33497},
   11680     33501, 33506, {f: 3, c: 33512}, {f: 3, c: 33516}, 33520, {f: 2, c: 33522},
   11681     {f: 2, c: 33525}, 33528, 33530, {f: 5, c: 33532}, {f: 2, c: 33546}, 33549,
   11682     33552, {f: 2, c: 33554}, 33558, {f: 2, c: 33560}, {f: 10, c: 33565},
   11683     {f: 2, c: 33577}, 33582, 33584, 33586, 33591, 33595, {f: 3, c: 33597},
   11684     {f: 2, c: 33601}, {f: 2, c: 33604}, 33608, {f: 5, c: 33610}, 33619,
   11685     {f: 5, c: 33621}, 33629, 33634, {f: 7, c: 33648}, {f: 2, c: 33657},
   11686     {f: 7, c: 33662}, {f: 2, c: 33671}, {f: 3, c: 33675}, {f: 3, c: 33679},
   11687     {f: 2, c: 33684}, 33687, {f: 2, c: 33689}, 33693, 33695, 33697,
   11688     {f: 4, c: 33699}, {f: 4, c: 33708}, 33717, 33723, {f: 2, c: 33726},
   11689     {f: 3, c: 33730}, 33734, {f: 2, c: 33736}, 33739, {f: 2, c: 33741},
   11690     {f: 4, c: 33744}, 33749, 33751, {f: 3, c: 33753}, 33758, {f: 3, c: 33762},
   11691     {f: 3, c: 33766}, {f: 4, c: 33771}, {f: 5, c: 33779}, {f: 3, c: 33786},
   11692     {f: 3, c: 33790}, 33794, 33797, {f: 2, c: 33800}, 33808, {f: 6, c: 33810},
   11693     {f: 3, c: 33817}, {f: 6, c: 33822}, {f: 3, c: 33833}, {f: 4, c: 33837},
   11694     {f: 3, c: 33842}, {f: 2, c: 33846}, {f: 3, c: 33849}, {f: 8, c: 33854},
   11695     {f: 2, c: 33863}, {f: 7, c: 33866}, {f: 4, c: 33875}, 33880,
   11696     {f: 4, c: 33885}, 33890, 33893, {f: 2, c: 33895}, 33898, 33902, 33904,
   11697     33906, 33908, 33913, {f: 7, c: 33915}, {f: 4, c: 33923}, 33930, 33933,
   11698     {f: 4, c: 33935}, {f: 2, c: 33941}, 33944, {f: 2, c: 33946},
   11699     {f: 4, c: 33949}, {f: 13, c: 33954}, {f: 2, c: 33968}, 33971,
   11700     {f: 3, c: 33973}, 33979, 33982, {f: 2, c: 33986}, {f: 4, c: 33989}, 33996,
   11701     {f: 2, c: 33998}, 34002, {f: 2, c: 34004}, {f: 6, c: 34007}, 34014,
   11702     {f: 2, c: 34017}, 34020, {f: 5, c: 34023}, 34029, {f: 11, c: 34033}, 34046,
   11703     {f: 12, c: 34048}, {f: 4, c: 34061}, 34066, {f: 2, c: 34069},
   11704     {f: 2, c: 34072}, {f: 3, c: 34075}, 34080, 34082, {f: 2, c: 34084},
   11705     {f: 4, c: 34087}, {f: 9, c: 34094}, {f: 3, c: 34110}, 34114,
   11706     {f: 2, c: 34116}, 34119, {f: 3, c: 34123}, {f: 3, c: 34127}, 34132, 34135,
   11707     {f: 4, c: 34138}, {f: 3, c: 34143}, 34147, {f: 3, c: 34149},
   11708     {f: 2, c: 34155}, {f: 4, c: 34158}, 34163, {f: 2, c: 34165}, 34168,
   11709     {f: 2, c: 34172}, {f: 5, c: 34175}, 34182, 34185, 34187, {f: 2, c: 34189},
   11710     34192, {f: 2, c: 34194}, {f: 6, c: 34197}, {f: 2, c: 34205},
   11711     {f: 4, c: 34208}, 34213, 34215, {f: 3, c: 34219}, {f: 6, c: 34225}, 34232,
   11712     {f: 6, c: 34235}, {f: 7, c: 34242}, {f: 3, c: 34250}, {f: 2, c: 34257},
   11713     34260, {f: 6, c: 34262}, {f: 6, c: 34270}, {f: 3, c: 34278},
   11714     {f: 9, c: 34283}, 34293, {f: 2, c: 34295}, {f: 3, c: 34300},
   11715     {f: 4, c: 34304}, {f: 3, c: 34312}, {f: 5, c: 34316}, {f: 4, c: 34322},
   11716     {f: 3, c: 34327}, {f: 3, c: 34331}, {f: 3, c: 34335}, {f: 4, c: 34339},
   11717     34344, {f: 3, c: 34346}, {f: 10, c: 34350}, 34361, 34363, {f: 2, c: 34365},
   11718     {f: 13, c: 34368}, {f: 2, c: 34386}, {f: 4, c: 34390}, 34395, 34397,
   11719     {f: 2, c: 34400}, {f: 4, c: 34403}, {f: 3, c: 34408}, 34413,
   11720     {f: 2, c: 34415}, {f: 7, c: 34418}, {f: 7, c: 34435}, {f: 5, c: 34446},
   11721     34452, {f: 6, c: 34454}, {f: 5, c: 34462}, {f: 2, c: 34469}, 34475,
   11722     {f: 2, c: 34477}, {f: 2, c: 34482}, {f: 3, c: 34487}, {f: 5, c: 34491},
   11723     {f: 3, c: 34497}, 34501, 34504, {f: 2, c: 34508}, {f: 2, c: 34514},
   11724     {f: 3, c: 34517}, 34522, {f: 2, c: 34524}, {f: 4, c: 34528},
   11725     {f: 4, c: 34533}, {f: 3, c: 34538}, 34543, {f: 3, c: 34549},
   11726     {f: 3, c: 34555}, 34559, 34561, {f: 2, c: 34564}, {f: 2, c: 34571},
   11727     {f: 4, c: 34574}, 34580, 34582, 34585, 34587, 34589, {f: 2, c: 34591},
   11728     34596, {f: 3, c: 34598}, {f: 4, c: 34602}, {f: 2, c: 34607},
   11729     {f: 2, c: 34610}, {f: 2, c: 34613}, {f: 3, c: 34616}, {f: 2, c: 34620},
   11730     {f: 7, c: 34624}, {f: 2, c: 34634}, 34637, {f: 4, c: 34639}, 34644, 34646,
   11731     34648, {f: 6, c: 34650}, {f: 2, c: 34657}, {f: 7, c: 34663}, 34671,
   11732     {f: 3, c: 34673}, 34677, 34679, {f: 2, c: 34681}, {f: 3, c: 34687},
   11733     {f: 2, c: 34694}, {f: 2, c: 34697}, 34700, {f: 5, c: 34702},
   11734     {f: 3, c: 34708}, {f: 6, c: 34712}, {f: 2, c: 34720}, {f: 5, c: 34723},
   11735     {f: 2, c: 34729}, 34734, {f: 3, c: 34736}, 34740, {f: 4, c: 34742}, 34748,
   11736     {f: 2, c: 34750}, {f: 3, c: 34753}, 34757, 34759, 34761, {f: 2, c: 34764},
   11737     {f: 2, c: 34767}, {f: 7, c: 34772}, {f: 4, c: 34780}, {f: 2, c: 34785},
   11738     34788, {f: 4, c: 34790}, 34795, 34797, {f: 2, c: 34800}, {f: 3, c: 34803},
   11739     {f: 2, c: 34807}, 34810, {f: 2, c: 34812}, {f: 4, c: 34815}, 34820,
   11740     {f: 3, c: 34823}, {f: 5, c: 34827}, 34834, 34836, {f: 4, c: 34839},
   11741     {f: 3, c: 34844}, 34848, {f: 13, c: 34852}, {f: 3, c: 34867},
   11742     {f: 2, c: 34871}, 34874, {f: 3, c: 34877}, {f: 3, c: 34881},
   11743     {f: 3, c: 34887}, 34891, {f: 5, c: 34894}, {f: 2, c: 34901}, 34904, 34906,
   11744     34908, {f: 3, c: 34910}, {f: 2, c: 34918}, 34922, 34925, 34927, 34929,
   11745     {f: 4, c: 34931}, 34936, {f: 3, c: 34938}, 34944, 34947, {f: 2, c: 34950},
   11746     {f: 2, c: 34953}, 34956, {f: 4, c: 34958}, {f: 3, c: 34963},
   11747     {f: 5, c: 34967}, {f: 5, c: 34973}, 34979, {f: 6, c: 34981}, 34988,
   11748     {f: 3, c: 34990}, {f: 5, c: 34994}, {f: 4, c: 35000}, {f: 4, c: 35005},
   11749     {f: 2, c: 35011}, {f: 2, c: 35015}, {f: 3, c: 35019}, {f: 2, c: 35024},
   11750     35027, {f: 2, c: 35030}, {f: 2, c: 35034}, 35038, {f: 2, c: 35040},
   11751     {f: 2, c: 35046}, {f: 7, c: 35049}, 35058, {f: 3, c: 35061},
   11752     {f: 2, c: 35066}, {f: 3, c: 35071}, {f: 4, c: 35075}, {f: 2, c: 35080},
   11753     {f: 5, c: 35083}, 35089, {f: 5, c: 35092}, {f: 5, c: 35100},
   11754     {f: 3, c: 35106}, {f: 4, c: 35110}, {f: 4, c: 35116}, 35121, 35125, 35127,
   11755     {f: 2, c: 35129}, {f: 5, c: 35132}, {f: 2, c: 35138}, {f: 2, c: 35141},
   11756     {f: 14, c: 35144}, {f: 6, c: 35159}, {f: 3, c: 35169}, 35173,
   11757     {f: 3, c: 35175}, 35179, {f: 2, c: 35181}, {f: 2, c: 35184},
   11758     {f: 8, c: 35187}, {f: 2, c: 35196}, [12177, 35198], 35200, 35202,
   11759     {f: 2, c: 35204}, {f: 4, c: 35207}, {f: 3, c: 35212}, {f: 3, c: 35216},
   11760     {f: 2, c: 35220}, 35223, {f: 8, c: 35225}, {f: 4, c: 35234},
   11761     {f: 3, c: 35239}, 35243, {f: 2, c: 35245}, {f: 2, c: 35248},
   11762     {f: 4, c: 35251}, {f: 2, c: 35256}, {f: 2, c: 35259}, 35262, 35267, 35277,
   11763     {f: 3, c: 35283}, {f: 3, c: 35287}, 35291, 35293, {f: 4, c: 35295}, 35300,
   11764     {f: 4, c: 35303}, {f: 3, c: 35308}, {f: 3, c: 35312}, 35317, 35319,
   11765     {f: 7, c: 35321}, {f: 3, c: 35332}, 35337, 35339, 35341, 35343,
   11766     {f: 2, c: 35345}, 35348, 35351, {f: 2, c: 35353}, 35356, 35358,
   11767     {f: 3, c: 35360}, 35364, {f: 4, c: 35366}, {f: 2, c: 35371},
   11768     {f: 3, c: 35374}, {f: 2, c: 35378}, 35381, {f: 3, c: 35383},
   11769     {f: 3, c: 35387}, {f: 2, c: 35391}, {f: 4, c: 35394}, 35399,
   11770     {f: 5, c: 35401}, 35407, 35409, 35411, {f: 2, c: 35414}, {f: 2, c: 35417},
   11771     {f: 2, c: 35420}, {f: 2, c: 35423}, {f: 2, c: 35428}, {f: 2, c: 35431},
   11772     35434, 35439, 35444, {f: 3, c: 35446}, {f: 2, c: 35450}, {f: 2, c: 35453},
   11773     {f: 4, c: 35456}, 35464, {f: 2, c: 35467}, {f: 3, c: 35470}, 35476,
   11774     {f: 2, c: 35478}, 35481, {f: 3, c: 35483}, 35487, 35490, 35495,
   11775     {f: 3, c: 35497}, {f: 3, c: 35501}, 35505, {f: 3, c: 35507},
   11776     {f: 2, c: 35511}, {f: 2, c: 35514}, {f: 2, c: 35517}, {f: 2, c: 35520},
   11777     35523, {f: 2, c: 35525}, 35528, 35530, 35532, 35534, 35536,
   11778     {f: 3, c: 35539}, {f: 3, c: 35544}, 35549, {f: 3, c: 35551}, 35555, 35557,
   11779     {f: 3, c: 35560}, 35564, {f: 2, c: 35567}, 35570, {f: 2, c: 35572}, 35577,
   11780     35579, 35581, 35583, 35587, 35590, {f: 2, c: 35592}, {f: 3, c: 35595},
   11781     35599, {f: 3, c: 35601}, 35605, 35608, 35612, {f: 3, c: 35614},
   11782     {f: 4, c: 35618}, 35623, {f: 2, c: 35625}, {f: 5, c: 35630},
   11783     {f: 5, c: 35636}, {f: 4, c: 35642}, {f: 10, c: 35647}, {f: 4, c: 35658},
   11784     {f: 6, c: 35664}, 35671, 35675, {f: 9, c: 35677}, {f: 4, c: 35687},
   11785     {f: 2, c: 35693}, {f: 3, c: 35697}, {f: 2, c: 35701}, {f: 5, c: 35704},
   11786     {f: 2, c: 35710}, {f: 9, c: 35713}, {f: 3, c: 35723}, {f: 3, c: 35727},
   11787     35732, {f: 5, c: 35735}, 35741, 35743, 35756, 35761, 35771, 35783, 35792,
   11788     35818, 35849, 35870, {f: 9, c: 35896}, {f: 4, c: 35906}, {f: 2, c: 35914},
   11789     {f: 3, c: 35917}, {f: 4, c: 35921}, {f: 4, c: 35926}, {f: 6, c: 35931},
   11790     {f: 7, c: 35939}, {f: 7, c: 35948}, {f: 4, c: 35956}, {f: 7, c: 35963},
   11791     {f: 2, c: 35971}, {f: 3, c: 35974}, 35979, {f: 7, c: 35981},
   11792     {f: 3, c: 35989}, {f: 4, c: 35993}, 35999, {f: 4, c: 36003},
   11793     {f: 2, c: 36013}, 36017, 36021, 36025, 36030, 36038, 36041,
   11794     {f: 6, c: 36043}, 36052, {f: 4, c: 36054}, 36059, 36061, 36063, 36069,
   11795     {f: 2, c: 36072}, {f: 6, c: 36078}, {f: 5, c: 36085}, {f: 5, c: 36095},
   11796     {f: 2, c: 36102}, 36105, 36108, 36110, {f: 5, c: 36113}, {f: 4, c: 36119},
   11797     36128, {f: 2, c: 36177}, 36183, 36191, 36197, {f: 3, c: 36200}, 36204,
   11798     {f: 2, c: 36206}, {f: 2, c: 36209}, {f: 9, c: 36216}, {f: 2, c: 36226},
   11799     {f: 4, c: 36230}, {f: 5, c: 36236}, {f: 2, c: 36242}, {f: 3, c: 36246},
   11800     {f: 5, c: 36250}, {f: 3, c: 36256}, {f: 4, c: 36260}, {f: 8, c: 36265},
   11801     {f: 2, c: 36278}, 36281, 36283, 36285, {f: 3, c: 36288}, 36293,
   11802     {f: 4, c: 36295}, 36301, 36304, {f: 4, c: 36306}, {f: 2, c: 36312}, 36316,
   11803     {f: 3, c: 36320}, {f: 3, c: 36325}, 36329, {f: 2, c: 36333},
   11804     {f: 3, c: 36336}, 36340, 36342, 36348, {f: 7, c: 36350}, {f: 3, c: 36358},
   11805     36363, {f: 2, c: 36365}, {f: 3, c: 36369}, {f: 8, c: 36373},
   11806     {f: 2, c: 36384}, {f: 5, c: 36388}, 36395, 36397, 36400, {f: 2, c: 36402},
   11807     {f: 3, c: 36406}, {f: 2, c: 36411}, {f: 2, c: 36414}, 36419,
   11808     {f: 2, c: 36421}, {f: 4, c: 36429}, {f: 2, c: 36435}, {f: 3, c: 36438},
   11809     {f: 9, c: 36442}, {f: 2, c: 36452}, {f: 2, c: 36455}, {f: 2, c: 36458},
   11810     36462, 36465, 36467, 36469, {f: 3, c: 36471}, 36475, {f: 2, c: 36477},
   11811     36480, {f: 3, c: 36482}, 36486, 36488, 36492, 36494, {f: 5, c: 36501},
   11812     36507, 36509, {f: 2, c: 36511}, {f: 3, c: 36514}, {f: 3, c: 36519},
   11813     {f: 2, c: 36525}, {f: 2, c: 36528}, {f: 7, c: 36531}, {f: 5, c: 36539},
   11814     {f: 9, c: 36545}, {f: 3, c: 36559}, 36563, {f: 6, c: 36565},
   11815     {f: 3, c: 36572}, {f: 4, c: 36576}, {f: 6, c: 36581}, {f: 6, c: 36588},
   11816     {f: 5, c: 36595}, 36605, {f: 4, c: 36607}, 36612, 36614, 36616,
   11817     {f: 7, c: 36619}, 36627, {f: 5, c: 36630}, {f: 5, c: 36640},
   11818     {f: 2, c: 36647}, {f: 4, c: 36651}, {f: 3, c: 36656}, {f: 4, c: 36660},
   11819     {f: 2, c: 36665}, {f: 2, c: 36668}, {f: 2, c: 36672}, 36675,
   11820     {f: 2, c: 36679}, {f: 3, c: 36682}, {f: 5, c: 36687}, {f: 10, c: 36693},
   11821     36704, 36707, 36709, 36714, 36736, 36748, 36754, 36765, {f: 3, c: 36768},
   11822     {f: 2, c: 36772}, 36775, 36778, 36780, {f: 2, c: 36787}, [12193, 36789],
   11823     {f: 2, c: 36791}, {f: 3, c: 36794}, {f: 2, c: 36799}, 36803, 36806,
   11824     {f: 5, c: 36809}, 36815, 36818, {f: 2, c: 36822}, 36826, {f: 2, c: 36832},
   11825     36835, 36839, 36844, 36847, {f: 2, c: 36849}, {f: 2, c: 36853},
   11826     {f: 3, c: 36858}, {f: 2, c: 36862}, {f: 2, c: 36871}, 36876, 36878, 36883,
   11827     36888, 36892, {f: 2, c: 36900}, {f: 6, c: 36903}, {f: 2, c: 36912},
   11828     {f: 2, c: 36915}, 36919, {f: 2, c: 36921}, 36925, {f: 2, c: 36927}, 36931,
   11829     {f: 2, c: 36933}, {f: 3, c: 36936}, 36940, 36950, {f: 2, c: 36953}, 36957,
   11830     36959, 36961, 36964, {f: 2, c: 36966}, {f: 3, c: 36970}, {f: 3, c: 36975},
   11831     36979, 36982, 36985, 36987, 36990, {f: 2, c: 36997}, 37001,
   11832     {f: 3, c: 37004}, 37010, 37012, 37014, 37016, 37018, 37020,
   11833     {f: 3, c: 37022}, {f: 2, c: 37028}, {f: 3, c: 37031}, 37035, 37037, 37042,
   11834     37047, {f: 2, c: 37052}, {f: 2, c: 37055}, {f: 2, c: 37058}, 37062,
   11835     {f: 2, c: 37064}, {f: 3, c: 37067}, 37074, {f: 3, c: 37076},
   11836     {f: 3, c: 37080}, 37086, 37088, {f: 3, c: 37091}, {f: 2, c: 37097}, 37100,
   11837     37102, {f: 4, c: 37104}, {f: 2, c: 37110}, {f: 4, c: 37113},
   11838     {f: 3, c: 37119}, 37123, 37125, {f: 2, c: 37127}, {f: 8, c: 37130}, 37139,
   11839     37141, {f: 2, c: 37143}, {f: 4, c: 37146}, {f: 3, c: 37151},
   11840     {f: 3, c: 37156}, {f: 5, c: 37160}, 37166, 37171, 37173, {f: 2, c: 37175},
   11841     {f: 8, c: 37179}, {f: 2, c: 37188}, 37191, 37201, {f: 4, c: 37203},
   11842     {f: 2, c: 37208}, {f: 2, c: 37211}, {f: 2, c: 37215}, {f: 3, c: 37222},
   11843     37227, 37229, 37235, {f: 3, c: 37242}, {f: 5, c: 37248}, 37254, 37256,
   11844     37258, {f: 2, c: 37262}, {f: 3, c: 37267}, {f: 3, c: 37271},
   11845     {f: 5, c: 37277}, {f: 6, c: 37284}, {f: 4, c: 37296}, {f: 4, c: 37302},
   11846     {f: 5, c: 37307}, 37314, 37316, [12196, 37318], 37320, 37328, 37334,
   11847     {f: 2, c: 37338}, {f: 5, c: 37342}, {f: 2, c: 37349}, 37352,
   11848     {f: 11, c: 37354}, 37366, 37368, {f: 5, c: 37371}, {f: 2, c: 37378},
   11849     {f: 3, c: 37381}, {f: 3, c: 37386}, 37391, {f: 2, c: 37394},
   11850     {f: 8, c: 37398}, {f: 4, c: 37407}, 37412, {f: 6, c: 37416}, 37423,
   11851     {f: 2, c: 37425}, {f: 2, c: 37429}, {f: 2, c: 37435}, {f: 4, c: 37441},
   11852     {f: 2, c: 37446}, {f: 3, c: 37450}, {f: 3, c: 37454}, {f: 3, c: 37458},
   11853     37462, {f: 2, c: 37464}, {f: 2, c: 37468}, {f: 3, c: 37471},
   11854     {f: 3, c: 37475}, {f: 5, c: 37479}, {f: 6, c: 37486}, {f: 3, c: 37493},
   11855     37497, {f: 3, c: 37500}, {f: 2, c: 37505}, 37508, {f: 8, c: 37510},
   11856     {f: 2, c: 37519}, 37522, {f: 2, c: 37524}, 37527, 37529, 37531,
   11857     {f: 3, c: 37533}, {f: 2, c: 37537}, 37540, 37543, 37549, {f: 2, c: 37551},
   11858     {f: 5, c: 37554}, 37560, 37562, {f: 4, c: 37565}, 37570, 37572, 37574,
   11859     {f: 3, c: 37577}, {f: 2, c: 37581}, {f: 2, c: 37584}, {f: 10, c: 37587},
   11860     37598, {f: 3, c: 37600}, 37607, 37609, {f: 2, c: 37611}, {f: 4, c: 37618},
   11861     37623, {f: 3, c: 37625}, {f: 4, c: 37629}, {f: 4, c: 37634},
   11862     {f: 7, c: 37641}, 37649, {f: 2, c: 37651}, {f: 2, c: 37654},
   11863     {f: 3, c: 37660}, 37665, {f: 3, c: 37667}, 37671, {f: 2, c: 37673},
   11864     {f: 2, c: 37676}, {f: 2, c: 37680}, {f: 2, c: 37684}, 37687,
   11865     {f: 5, c: 37689}, 37695, 37698, {f: 2, c: 37700}, {f: 3, c: 37704}, 37708,
   11866     {f: 6, c: 37710}, {f: 3, c: 37717}, {f: 2, c: 37721}, {f: 8, c: 37724},
   11867     {f: 3, c: 37734}, 37739, {f: 3, c: 37741}, {f: 4, c: 37745},
   11868     {f: 3, c: 37751}, {f: 3, c: 37755}, {f: 3, c: 37759}, 37763,
   11869     {f: 2, c: 37765}, {f: 2, c: 37768}, {f: 4, c: 37771}, {f: 6, c: 37776},
   11870     37783, {f: 9, c: 37785}, {f: 2, c: 37796}, 37800, 37803, 37805, 37807,
   11871     {f: 2, c: 37809}, 37812, {f: 2, c: 37814}, {f: 6, c: 37817},
   11872     {f: 3, c: 37824}, {f: 3, c: 37828}, 37833, 37835, {f: 3, c: 37838},
   11873     {f: 4, c: 37842}, {f: 3, c: 37849}, 37856, 37859, {f: 3, c: 37861},
   11874     {f: 12, c: 37865}, 37878, 37880, {f: 9, c: 37882}, {f: 7, c: 37892},
   11875     {f: 4, c: 37900}, 37905, {f: 3, c: 37909}, {f: 3, c: 37914},
   11876     {f: 2, c: 37918}, {f: 5, c: 37921}, {f: 5, c: 37929}, {f: 3, c: 37935},
   11877     37940, {f: 2, c: 37942}, 37945, {f: 3, c: 37947}, {f: 4, c: 37952},
   11878     {f: 5, c: 37957}, 37963, {f: 5, c: 37965}, 37971, {f: 11, c: 37973},
   11879     {f: 2, c: 37985}, 37988, {f: 5, c: 37990}, 37996, {f: 2, c: 37998}, 38001,
   11880     {f: 4, c: 38003}, 38008, {f: 2, c: 38010}, {f: 5, c: 38016}, 38033, 38038,
   11881     38040, 38087, 38095, {f: 2, c: 38099}, 38106, 38118, 38139, 38172, 38176,
   11882     38183, 38195, 38205, 38211, 38216, 38219, 38229, 38234, 38240, 38254,
   11883     {f: 2, c: 38260}, {f: 7, c: 38264}, 38273, {f: 2, c: 38276},
   11884     {f: 2, c: 38279}, 38282, 38285, 38288, 38290, {f: 3, c: 38293},
   11885     {f: 8, c: 38297}, 38306, {f: 2, c: 38310}, 38314, {f: 4, c: 38318},
   11886     {f: 3, c: 38323}, {f: 2, c: 38327}, 38330, {f: 3, c: 38336},
   11887     {f: 2, c: 38340}, 38343, 38345, {f: 3, c: 38349}, {f: 3, c: 38353},
   11888     {f: 5, c: 38359}, 38365, {f: 2, c: 38367}, {f: 2, c: 38371},
   11889     {f: 2, c: 38374}, 38380, 38399, 38407, 38419, 38424, 38427, 38430, 38432,
   11890     {f: 7, c: 38435}, {f: 3, c: 38443}, {f: 2, c: 38447}, {f: 4, c: 38455},
   11891     38462, 38465, 38467, 38474, {f: 2, c: 38478}, {f: 3, c: 38481},
   11892     {f: 2, c: 38486}, {f: 2, c: 38489}, 38492, 38494, 38496, {f: 2, c: 38501},
   11893     38507, {f: 3, c: 38509}, 38513, {f: 4, c: 38521}, {f: 7, c: 38526}, 38535,
   11894     38537, 38540, {f: 3, c: 38545}, 38550, 38554, {f: 10, c: 38557}, 38569,
   11895     {f: 5, c: 38571}, 38578, 38581, 38583, 38586, 38591, {f: 2, c: 38594},
   11896     38600, {f: 2, c: 38602}, {f: 2, c: 38608}, {f: 2, c: 38611},
   11897     {f: 2, c: 38615}, 38618, {f: 3, c: 38621}, 38625, {f: 4, c: 38628},
   11898     {f: 4, c: 38635}, {f: 2, c: 38640}, {f: 2, c: 38644}, 38648, 38650,
   11899     {f: 2, c: 38652}, 38655, {f: 2, c: 38658}, 38661, {f: 3, c: 38666},
   11900     {f: 3, c: 38672}, {f: 2, c: 38676}, {f: 5, c: 38679}, 38685,
   11901     {f: 8, c: 38687}, {f: 2, c: 38696}, {f: 2, c: 38699}, {f: 2, c: 38702},
   11902     38705, {f: 5, c: 38707}, {f: 3, c: 38714}, {f: 3, c: 38719}, 38723,
   11903     {f: 3, c: 38725}, {f: 8, c: 38729}, [12205, 38737], {f: 2, c: 38740},
   11904     {f: 2, c: 38743}, {f: 2, c: 38748}, 38751, {f: 2, c: 38755},
   11905     {f: 2, c: 38758}, {f: 9, c: 38762}, 38773, {f: 5, c: 38775},
   11906     {f: 8, c: 38781}, {f: 5, c: 38790}, 38796, 38798, 38800, 38803,
   11907     {f: 3, c: 38805}, {f: 7, c: 38809}, {f: 2, c: 38817}, {f: 2, c: 38820},
   11908     {f: 4, c: 38823}, 38828, 38830, {f: 2, c: 38832}, 38835, {f: 8, c: 38837},
   11909     {f: 5, c: 38846}, {f: 2, c: 38852}, {f: 2, c: 38855}, 38858,
   11910     {f: 6, c: 38861}, {f: 5, c: 38868}, {f: 2, c: 38874}, 38877,
   11911     {f: 7, c: 38879}, 38888, {f: 5, c: 38894}, 38900, {f: 8, c: 38903}, 38912,
   11912     38916, 38921, 38923, 38925, {f: 3, c: 38932}, {f: 3, c: 38937},
   11913     {f: 4, c: 38941}, {f: 2, c: 38946}, 38949, {f: 6, c: 38951},
   11914     {f: 2, c: 38958}, {f: 6, c: 38961}, {f: 2, c: 38969}, 38972,
   11915     {f: 8, c: 38974}, {f: 5, c: 38983}, {f: 4, c: 38991}, {f: 3, c: 38997},
   11916     39002, {f: 2, c: 39004}, {f: 3, c: 39007}, {f: 2, c: 39011}, 39014,
   11917     {f: 3, c: 39016}, {f: 2, c: 39021}, 39026, 39051, 39054, 39058, 39061,
   11918     39065, 39075, {f: 5, c: 39081}, 39088, 39090, {f: 2, c: 39092},
   11919     {f: 5, c: 39095}, {f: 7, c: 39101}, 39109, 39111, {f: 5, c: 39113},
   11920     {f: 2, c: 39119}, 39124, {f: 2, c: 39126}, {f: 2, c: 39132}, 39137,
   11921     {f: 4, c: 39139}, 39148, 39150, {f: 2, c: 39152}, 39155, {f: 7, c: 39157},
   11922     {f: 4, c: 39167}, 39172, {f: 3, c: 39174}, 39179, {f: 2, c: 39182},
   11923     {f: 4, c: 39188}, {f: 2, c: 39193}, {f: 2, c: 39196}, {f: 2, c: 39199},
   11924     {f: 6, c: 39202}, {f: 5, c: 39209}, {f: 4, c: 39215}, {f: 3, c: 39220},
   11925     {f: 4, c: 39224}, 39229, {f: 3, c: 39232}, 39236, {f: 2, c: 39238},
   11926     {f: 4, c: 39245}, 39251, 39254, {f: 4, c: 39256}, 39261, {f: 3, c: 39263},
   11927     39268, 39270, 39283, {f: 2, c: 39288}, 39291, 39294, {f: 2, c: 39298},
   11928     39305, 39308, 39310, {f: 11, c: 39322}, {f: 2, c: 39334}, {f: 3, c: 39337},
   11929     {f: 2, c: 39343}, 39346, {f: 12, c: 39349}, {f: 14, c: 39362}, 39379,
   11930     {f: 2, c: 39382}, 39386, 39388, 39390, 39392, {f: 10, c: 39395},
   11931     {f: 3, c: 39406}, {f: 13, c: 39410}, 39424, {f: 3, c: 39426},
   11932     {f: 7, c: 39430}, {f: 6, c: 39440}, {f: 2, c: 39447}, {f: 17, c: 39450},
   11933     39468, 39471, {f: 5, c: 39473}, {f: 5, c: 39481}, 39487, {f: 4, c: 39494},
   11934     {f: 2, c: 39499}, 39502, {f: 5, c: 39504}, 39510, {f: 2, c: 39512},
   11935     {f: 3, c: 39516}, {f: 2, c: 39520}, 39523, {f: 4, c: 39526}, 39531, 39538,
   11936     39555, 39561, {f: 2, c: 39565}, {f: 2, c: 39572}, 39577, 39590,
   11937     {f: 6, c: 39593}, {f: 4, c: 39602}, 39609, 39611, {f: 3, c: 39613},
   11938     {f: 2, c: 39619}, {f: 5, c: 39622}, {f: 2, c: 39629}, 39632, 39639,
   11939     {f: 6, c: 39641}, 39648, {f: 4, c: 39650}, {f: 4, c: 39655}, 39660,
   11940     {f: 9, c: 39664}, 39674, {f: 7, c: 39676}, {f: 2, c: 39684}, 39687,
   11941     {f: 4, c: 39689}, 39694, {f: 3, c: 39696}, {f: 6, c: 39700},
   11942     {f: 4, c: 39707}, {f: 2, c: 39712}, 39716, 39718, 39720, {f: 4, c: 39722},
   11943     39728, {f: 8, c: 39731}, {f: 4, c: 39741}, 39750, {f: 3, c: 39754}, 39760,
   11944     {f: 2, c: 39762}, {f: 3, c: 39765}, 39769, {f: 20, c: 39771},
   11945     {f: 4, c: 39792}, {f: 2, c: 39797}, {f: 9, c: 39800}, 39810,
   11946     {f: 10, c: 39812}, 39823, {f: 7, c: 39827}, {f: 2, c: 39835},
   11947     {f: 11, c: 39839}, 39852, {f: 17, c: 39855}, {f: 5, c: 39874}, 39880,
   11948     {f: 9, c: 39883}, 39893, {f: 4, c: 39895}, 39900, {f: 3, c: 39902}, 39907,
   11949     {f: 2, c: 39909}, 39913, {f: 4, c: 39916}, {f: 3, c: 39921},
   11950     {f: 8, c: 39925}, 39934, {f: 8, c: 39936}, {f: 3, c: 39946},
   11951     {f: 2, c: 39950}, 39953, {f: 12, c: 39956}, {f: 2, c: 39969}, 39972,
   11952     {f: 2, c: 39974}, {f: 3, c: 39978}, {f: 3, c: 39982}, 39988, 39990, 39992,
   11953     39994, {f: 2, c: 39996}, {f: 6, c: 39999}, {f: 2, c: 40006},
   11954     {f: 8, c: 40010}, 40019, 40021, {f: 4, c: 40025}, 40030, {f: 7, c: 40032},
   11955     {f: 5, c: 40040}, {f: 10, c: 40046}, 40057, 40059, {f: 2, c: 40061}, 40064,
   11956     {f: 2, c: 40067}, {f: 2, c: 40073}, 40076, 40079, 40083, {f: 4, c: 40086},
   11957     40093, 40106, 40108, 40111, 40121, {f: 5, c: 40126}, {f: 2, c: 40136},
   11958     {f: 2, c: 40145}, {f: 2, c: 40154}, {f: 2, c: 40160}, {f: 2, c: 40163},
   11959     {f: 3, c: 40166}, {f: 2, c: 40170}, {f: 6, c: 40173}, 40181,
   11960     {f: 15, c: 40183}, 40200, {f: 11, c: 40202}, {f: 5, c: 40214}, 40220,
   11961     40222, {f: 3, c: 40224}, {f: 2, c: 40228}, 40231, {f: 6, c: 40233},
   11962     {f: 10, c: 40241}, {f: 3, c: 40252}, {f: 2, c: 40256}, {f: 14, c: 40259},
   11963     {f: 8, c: 40276}, {f: 2, c: 40286}, {f: 8, c: 40290}, 40299,
   11964     {f: 2, c: 40301}, {f: 2, c: 40304}, {f: 20, c: 40307}, 40328,
   11965     {f: 9, c: 40330}, {f: 4, c: 40340}, 40345, {f: 10, c: 40347},
   11966     {f: 3, c: 40358}, {f: 5, c: 40362}, {f: 4, c: 40368}, {f: 6, c: 40373},
   11967     {f: 3, c: 40381}, 40385, 40387, {f: 14, c: 40389}, {f: 3, c: 40404}, 40408,
   11968     {f: 10, c: 40411}, {f: 8, c: 40423}, {f: 2, c: 40432}, {f: 4, c: 40436},
   11969     {f: 17, c: 40443}, {f: 8, c: 40461}, {f: 4, c: 40470}, 40476, 40484, 40487,
   11970     40494, 40496, 40500, {f: 2, c: 40507}, 40512, 40525, 40528,
   11971     {f: 3, c: 40530}, 40534, 40537, 40541, {f: 4, c: 40543}, 40549,
   11972     {f: 2, c: 40558}, 40562, 40564, {f: 3, c: 40566}, 40571, {f: 2, c: 40576},
   11973     {f: 4, c: 40579}, {f: 2, c: 40585}, {f: 6, c: 40588}, {f: 3, c: 40596},
   11974     {f: 5, c: 40600}, 40606, {f: 5, c: 40608}, {f: 2, c: 40615},
   11975     {f: 5, c: 40618}, {f: 4, c: 40624}, {f: 2, c: 40630}, {f: 2, c: 40633},
   11976     40636, {f: 4, c: 40639}, [12232, 40643], {f: 4, c: 40645},
   11977     {f: 2, c: 40650}, 40656, {f: 2, c: 40658}, {f: 3, c: 40661},
   11978     {f: 2, c: 40665}, 40673, {f: 2, c: 40675}, 40678, {f: 4, c: 40683},
   11979     {f: 2, c: 40688}, 40691, {f: 2, c: 40693}, 40696, 40698, {f: 9, c: 40704},
   11980     40714, 40716, 40719, {f: 2, c: 40721}, 40724, 40726, 40728,
   11981     {f: 6, c: 40730}, 40737, {f: 9, c: 40739}, {f: 2, c: 40749},
   11982     {f: 7, c: 40752}, 40760, 40762, 40764, {f: 5, c: 40767}, {f: 5, c: 40773},
   11983     {f: 3, c: 40780}, 40787, {f: 4, c: 40789}, {f: 2, c: 40794},
   11984     {f: 2, c: 40797}, 40802, {f: 2, c: 40804}, {f: 3, c: 40807}, 40811,
   11985     {f: 5, c: 40813}, {f: 4, c: 40819}, {f: 7, c: 40824}, {f: 2, c: 40833},
   11986     {f: 2, c: 40846}, {f: 3, c: 40849}, {f: 3, c: 40854}, {f: 2, c: 40861},
   11987     {f: 5, c: 40865}, 63788, {f: 3, c: 64013}, 64017, {f: 2, c: 64019}, 64024,
   11988     {f: 3, c: 64031}, {f: 2, c: 64035}, {f: 3, c: 64039}, 11905,
   11989     [59414, 131207], [59415, 131209], [59416, 131276], 11908, 13427, 13383,
   11990     11912, 11915, 59422, 13726, 13850, 13838, 11916, 11927, 14702, 14616,
   11991     59430, 14799, 14815, 14963, 14800, {f: 2, c: 59435}, 15182, 15470, 15584,
   11992     11943, [59441, 136663], 59442, 11946, 16470, 16735, 11950, 17207, 11955,
   11993     {f: 2, c: 11958}, [59451, 141711], 17329, 17324, 11963, 17373, 17622,
   11994     18017, 17996, [59459, 132361], 18211, 18217, 18300, 18317, 11978, 18759,
   11995     18810, 18813, {f: 2, c: 18818}, {f: 2, c: 18821}, 18847, 18843, 18871,
   11996     18870, [59476, 133533], [59477, 147966], 19619, {f: 3, c: 19615}, 19575,
   11997     19618, {f: 7, c: 19731}, 19886, 59492, {s: 226}, 8364, 165, 0, 0, 12351,
   11998     {s: 17}, 12436, {s: 14}, 12535, 12537, 12536, 12538, 0, {f: 3, c: 12339},
   11999     {f: 3, c: 12344}, {f: 3, c: 12586}, {f: 24, c: 12704}, 11904,
   12000     {f: 2, c: 11906}, {f: 3, c: 11909}, {f: 2, c: 11913}, {f: 10, c: 11917},
   12001     {f: 2, c: 11928}, {f: 12, c: 11931}, {f: 2, c: 11944}, {f: 3, c: 11947},
   12002     {f: 4, c: 11951}, {f: 2, c: 11956}, {f: 3, c: 11960}, {f: 14, c: 11964},
   12003     {f: 41, c: 11979}, {f: 71, c: 13312}, {f: 43, c: 13384},
   12004     {f: 298, c: 13428}, {f: 111, c: 13727}, {f: 11, c: 13839},
   12005     {f: 765, c: 13851}, {f: 85, c: 14617}, {f: 96, c: 14703},
   12006     {f: 14, c: 14801}, {f: 147, c: 14816}, {f: 218, c: 14964},
   12007     {f: 287, c: 15183}, {f: 113, c: 15471}, {f: 885, c: 15585},
   12008     {f: 264, c: 16471}, {f: 471, c: 16736}, {f: 116, c: 17208},
   12009     {f: 4, c: 17325}, {f: 43, c: 17330}, {f: 248, c: 17374},
   12010     {f: 373, c: 17623}, {f: 20, c: 17997}, {f: 193, c: 18018},
   12011     {f: 5, c: 18212}, {f: 82, c: 18218}, {f: 16, c: 18301}, {f: 441, c: 18318},
   12012     {f: 50, c: 18760}, {f: 2, c: 18811}, {f: 4, c: 18814}, 18820,
   12013     {f: 20, c: 18823}, {f: 3, c: 18844}, {f: 22, c: 18848}, {f: 703, c: 18872},
   12014     {f: 39, c: 19576}, {f: 111, c: 19620}, {f: 148, c: 19738},
   12015     {f: 7, c: 19887}]
   12016 };
   12017 
   12018 
   12019 /* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
   12020 /* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */
   12021 
   12022 'use strict';
   12023 
   12024 var ColorSpace = (function ColorSpaceClosure() {
   12025   // Constructor should define this.numComps, this.defaultColor, this.name
   12026   function ColorSpace() {
   12027     error('should not call ColorSpace constructor');
   12028   }
   12029 
   12030   ColorSpace.prototype = {
   12031     // Input: array of size numComps representing color component values
   12032     // Output: array of rgb values, each value ranging from [0.1]
   12033     getRgb: function ColorSpace_getRgb(color) {
   12034       error('Should not call ColorSpace.getRgb: ' + color);
   12035     },
   12036     // Input: Uint8Array of component values, each value scaled to [0,255]
   12037     // Output: Uint8Array of rgb values, each value scaled to [0,255]
   12038     getRgbBuffer: function ColorSpace_getRgbBuffer(input) {
   12039       error('Should not call ColorSpace.getRgbBuffer: ' + input);
   12040     }
   12041   };
   12042 
   12043   ColorSpace.parse = function ColorSpace_parse(cs, xref, res) {
   12044     var IR = ColorSpace.parseToIR(cs, xref, res);
   12045     if (IR instanceof AlternateCS)
   12046       return IR;
   12047 
   12048     return ColorSpace.fromIR(IR);
   12049   };
   12050 
   12051   ColorSpace.fromIR = function ColorSpace_fromIR(IR) {
   12052     var name = isArray(IR) ? IR[0] : IR;
   12053 
   12054     switch (name) {
   12055       case 'DeviceGrayCS':
   12056         return new DeviceGrayCS();
   12057       case 'DeviceRgbCS':
   12058         return new DeviceRgbCS();
   12059       case 'DeviceCmykCS':
   12060         return new DeviceCmykCS();
   12061       case 'PatternCS':
   12062         var basePatternCS = IR[1];
   12063         if (basePatternCS)
   12064           basePatternCS = ColorSpace.fromIR(basePatternCS);
   12065         return new PatternCS(basePatternCS);
   12066       case 'IndexedCS':
   12067         var baseIndexedCS = IR[1];
   12068         var hiVal = IR[2];
   12069         var lookup = IR[3];
   12070         return new IndexedCS(ColorSpace.fromIR(baseIndexedCS), hiVal, lookup);
   12071       case 'AlternateCS':
   12072         var numComps = IR[1];
   12073         var alt = IR[2];
   12074         var tintFnIR = IR[3];
   12075 
   12076         return new AlternateCS(numComps, ColorSpace.fromIR(alt),
   12077                                 PDFFunction.fromIR(tintFnIR));
   12078       case 'LabCS':
   12079         var whitePoint = IR[1].WhitePoint;
   12080         var blackPoint = IR[1].BlackPoint;
   12081         var range = IR[1].Range;
   12082         return new LabCS(whitePoint, blackPoint, range);
   12083       default:
   12084         error('Unkown name ' + name);
   12085     }
   12086     return null;
   12087   };
   12088 
   12089   ColorSpace.parseToIR = function ColorSpace_parseToIR(cs, xref, res) {
   12090     if (isName(cs)) {
   12091       var colorSpaces = res.get('ColorSpace');
   12092       if (isDict(colorSpaces)) {
   12093         var refcs = colorSpaces.get(cs.name);
   12094         if (refcs)
   12095           cs = refcs;
   12096       }
   12097     }
   12098 
   12099     cs = xref.fetchIfRef(cs);
   12100     var mode;
   12101 
   12102     if (isName(cs)) {
   12103       mode = cs.name;
   12104       this.mode = mode;
   12105 
   12106       switch (mode) {
   12107         case 'DeviceGray':
   12108         case 'G':
   12109           return 'DeviceGrayCS';
   12110         case 'DeviceRGB':
   12111         case 'RGB':
   12112           return 'DeviceRgbCS';
   12113         case 'DeviceCMYK':
   12114         case 'CMYK':
   12115           return 'DeviceCmykCS';
   12116         case 'Pattern':
   12117           return ['PatternCS', null];
   12118         default:
   12119           error('unrecognized colorspace ' + mode);
   12120       }
   12121     } else if (isArray(cs)) {
   12122       mode = cs[0].name;
   12123       this.mode = mode;
   12124 
   12125       switch (mode) {
   12126         case 'DeviceGray':
   12127         case 'G':
   12128           return 'DeviceGrayCS';
   12129         case 'DeviceRGB':
   12130         case 'RGB':
   12131           return 'DeviceRgbCS';
   12132         case 'DeviceCMYK':
   12133         case 'CMYK':
   12134           return 'DeviceCmykCS';
   12135         case 'CalGray':
   12136           return 'DeviceGrayCS';
   12137         case 'CalRGB':
   12138           return 'DeviceRgbCS';
   12139         case 'ICCBased':
   12140           var stream = xref.fetchIfRef(cs[1]);
   12141           var dict = stream.dict;
   12142           var numComps = dict.get('N');
   12143           if (numComps == 1)
   12144             return 'DeviceGrayCS';
   12145           if (numComps == 3)
   12146             return 'DeviceRgbCS';
   12147           if (numComps == 4)
   12148             return 'DeviceCmykCS';
   12149           break;
   12150         case 'Pattern':
   12151           var basePatternCS = cs[1];
   12152           if (basePatternCS)
   12153             basePatternCS = ColorSpace.parseToIR(basePatternCS, xref, res);
   12154           return ['PatternCS', basePatternCS];
   12155         case 'Indexed':
   12156         case 'I':
   12157           var baseIndexedCS = ColorSpace.parseToIR(cs[1], xref, res);
   12158           var hiVal = cs[2] + 1;
   12159           var lookup = xref.fetchIfRef(cs[3]);
   12160           return ['IndexedCS', baseIndexedCS, hiVal, lookup];
   12161         case 'Separation':
   12162         case 'DeviceN':
   12163           var name = cs[1];
   12164           var numComps = 1;
   12165           if (isName(name))
   12166             numComps = 1;
   12167           else if (isArray(name))
   12168             numComps = name.length;
   12169           var alt = ColorSpace.parseToIR(cs[2], xref, res);
   12170           var tintFnIR = PDFFunction.getIR(xref, xref.fetchIfRef(cs[3]));
   12171           return ['AlternateCS', numComps, alt, tintFnIR];
   12172         case 'Lab':
   12173           var params = cs[1].getAll();
   12174           return ['LabCS', params];
   12175         default:
   12176           error('unimplemented color space object "' + mode + '"');
   12177       }
   12178     } else {
   12179       error('unrecognized color space object: "' + cs + '"');
   12180     }
   12181     return null;
   12182   };
   12183   /**
   12184    * Checks if a decode map matches the default decode map for a color space.
   12185    * This handles the general decode maps where there are two values per
   12186    * component. e.g. [0, 1, 0, 1, 0, 1] for a RGB color.
   12187    * This does not handle Lab, Indexed, or Pattern decode maps since they are
   12188    * slightly different.
   12189    * @param {Array} decode Decode map (usually from an image).
   12190    * @param {Number} n Number of components the color space has.
   12191    */
   12192   ColorSpace.isDefaultDecode = function ColorSpace_isDefaultDecode(decode, n) {
   12193     if (!decode)
   12194       return true;
   12195 
   12196     if (n * 2 !== decode.length) {
   12197       warning('The decode map is not the correct length');
   12198       return true;
   12199     }
   12200     for (var i = 0, ii = decode.length; i < ii; i += 2) {
   12201       if (decode[i] != 0 || decode[i + 1] != 1)
   12202         return false;
   12203     }
   12204     return true;
   12205   };
   12206 
   12207   return ColorSpace;
   12208 })();
   12209 
   12210 /**
   12211  * Alternate color space handles both Separation and DeviceN color spaces.  A
   12212  * Separation color space is actually just a DeviceN with one color component.
   12213  * Both color spaces use a tinting function to convert colors to a base color
   12214  * space.
   12215  */
   12216 var AlternateCS = (function AlternateCSClosure() {
   12217   function AlternateCS(numComps, base, tintFn) {
   12218     this.name = 'Alternate';
   12219     this.numComps = numComps;
   12220     this.defaultColor = [];
   12221     for (var i = 0; i < numComps; ++i)
   12222       this.defaultColor.push(1);
   12223     this.base = base;
   12224     this.tintFn = tintFn;
   12225   }
   12226 
   12227   AlternateCS.prototype = {
   12228     getRgb: function AlternateCS_getRgb(color) {
   12229       var tinted = this.tintFn(color);
   12230       return this.base.getRgb(tinted);
   12231     },
   12232     getRgbBuffer: function AlternateCS_getRgbBuffer(input, bits) {
   12233       var tintFn = this.tintFn;
   12234       var base = this.base;
   12235       var scale = 1 / ((1 << bits) - 1);
   12236       var length = input.length;
   12237       var pos = 0;
   12238       var baseNumComps = base.numComps;
   12239       var baseBuf = new Uint8Array(baseNumComps * length);
   12240       var numComps = this.numComps;
   12241       var scaled = [];
   12242 
   12243       for (var i = 0; i < length; i += numComps) {
   12244         for (var z = 0; z < numComps; ++z)
   12245           scaled[z] = input[i + z] * scale;
   12246 
   12247         var tinted = tintFn(scaled);
   12248         for (var j = 0; j < baseNumComps; ++j)
   12249           baseBuf[pos++] = 255 * tinted[j];
   12250       }
   12251       return base.getRgbBuffer(baseBuf, 8);
   12252     },
   12253     isDefaultDecode: function AlternateCS_isDefaultDecode(decodeMap) {
   12254       return ColorSpace.isDefaultDecode(decodeMap, this.numComps);
   12255     }
   12256   };
   12257 
   12258   return AlternateCS;
   12259 })();
   12260 
   12261 var PatternCS = (function PatternCSClosure() {
   12262   function PatternCS(baseCS) {
   12263     this.name = 'Pattern';
   12264     this.base = baseCS;
   12265   }
   12266   PatternCS.prototype = {};
   12267 
   12268   return PatternCS;
   12269 })();
   12270 
   12271 var IndexedCS = (function IndexedCSClosure() {
   12272   function IndexedCS(base, highVal, lookup) {
   12273     this.name = 'Indexed';
   12274     this.numComps = 1;
   12275     this.defaultColor = [0];
   12276     this.base = base;
   12277     this.highVal = highVal;
   12278 
   12279     var baseNumComps = base.numComps;
   12280     var length = baseNumComps * highVal;
   12281     var lookupArray = new Uint8Array(length);
   12282 
   12283     if (isStream(lookup)) {
   12284       var bytes = lookup.getBytes(length);
   12285       lookupArray.set(bytes);
   12286     } else if (isString(lookup)) {
   12287       for (var i = 0; i < length; ++i)
   12288         lookupArray[i] = lookup.charCodeAt(i);
   12289     } else {
   12290       error('Unrecognized lookup table: ' + lookup);
   12291     }
   12292     this.lookup = lookupArray;
   12293   }
   12294 
   12295   IndexedCS.prototype = {
   12296     getRgb: function IndexedCS_getRgb(color) {
   12297       var numComps = this.base.numComps;
   12298       var start = color[0] * numComps;
   12299       var c = [];
   12300 
   12301       for (var i = start, ii = start + numComps; i < ii; ++i)
   12302         c.push(this.lookup[i]);
   12303 
   12304       return this.base.getRgb(c);
   12305     },
   12306     getRgbBuffer: function IndexedCS_getRgbBuffer(input) {
   12307       var base = this.base;
   12308       var numComps = base.numComps;
   12309       var lookup = this.lookup;
   12310       var length = input.length;
   12311       var baseBuf = new Uint8Array(length * numComps);
   12312       var baseBufPos = 0;
   12313 
   12314       for (var i = 0; i < length; ++i) {
   12315         var lookupPos = input[i] * numComps;
   12316         for (var j = 0; j < numComps; ++j) {
   12317           baseBuf[baseBufPos++] = lookup[lookupPos + j];
   12318         }
   12319       }
   12320 
   12321       return base.getRgbBuffer(baseBuf, 8);
   12322     },
   12323     isDefaultDecode: function IndexedCS_isDefaultDecode(decodeMap) {
   12324       // indexed color maps shouldn't be changed
   12325       return true;
   12326     }
   12327   };
   12328   return IndexedCS;
   12329 })();
   12330 
   12331 var DeviceGrayCS = (function DeviceGrayCSClosure() {
   12332   function DeviceGrayCS() {
   12333     this.name = 'DeviceGray';
   12334     this.numComps = 1;
   12335     this.defaultColor = [0];
   12336   }
   12337 
   12338   DeviceGrayCS.prototype = {
   12339     getRgb: function DeviceGrayCS_getRgb(color) {
   12340       var c = color[0];
   12341       return [c, c, c];
   12342     },
   12343     getRgbBuffer: function DeviceGrayCS_getRgbBuffer(input, bits) {
   12344       var scale = 255 / ((1 << bits) - 1);
   12345       var length = input.length;
   12346       var rgbBuf = new Uint8Array(length * 3);
   12347       for (var i = 0, j = 0; i < length; ++i) {
   12348         var c = (scale * input[i]) | 0;
   12349         rgbBuf[j++] = c;
   12350         rgbBuf[j++] = c;
   12351         rgbBuf[j++] = c;
   12352       }
   12353       return rgbBuf;
   12354     },
   12355     isDefaultDecode: function DeviceGrayCS_isDefaultDecode(decodeMap) {
   12356       return ColorSpace.isDefaultDecode(decodeMap, this.numComps);
   12357     }
   12358   };
   12359   return DeviceGrayCS;
   12360 })();
   12361 
   12362 var DeviceRgbCS = (function DeviceRgbCSClosure() {
   12363   function DeviceRgbCS() {
   12364     this.name = 'DeviceRGB';
   12365     this.numComps = 3;
   12366     this.defaultColor = [0, 0, 0];
   12367   }
   12368   DeviceRgbCS.prototype = {
   12369     getRgb: function DeviceRgbCS_getRgb(color) {
   12370       return color;
   12371     },
   12372     getRgbBuffer: function DeviceRgbCS_getRgbBuffer(input, bits) {
   12373       if (bits == 8)
   12374         return input;
   12375       var scale = 255 / ((1 << bits) - 1);
   12376       var i, length = input.length;
   12377       var rgbBuf = new Uint8Array(length);
   12378       for (i = 0; i < length; ++i)
   12379         rgbBuf[i] = (scale * input[i]) | 0;
   12380       return rgbBuf;
   12381     },
   12382     isDefaultDecode: function DeviceRgbCS_isDefaultDecode(decodeMap) {
   12383       return ColorSpace.isDefaultDecode(decodeMap, this.numComps);
   12384     }
   12385   };
   12386   return DeviceRgbCS;
   12387 })();
   12388 
   12389 var DeviceCmykCS = (function DeviceCmykCSClosure() {
   12390   function DeviceCmykCS() {
   12391     this.name = 'DeviceCMYK';
   12392     this.numComps = 4;
   12393     this.defaultColor = [0, 0, 0, 1];
   12394   }
   12395   DeviceCmykCS.prototype = {
   12396     getRgb: function DeviceCmykCS_getRgb(color) {
   12397       var c = color[0], m = color[1], y = color[2], k = color[3];
   12398 
   12399       // CMYK -> CMY: http://www.easyrgb.com/index.php?X=MATH&H=14#text14
   12400       c = (c * (1 - k) + k);
   12401       m = (m * (1 - k) + k);
   12402       y = (y * (1 - k) + k);
   12403 
   12404       // CMY -> RGB: http://www.easyrgb.com/index.php?X=MATH&H=12#text12
   12405       var r = (1 - c);
   12406       var g = (1 - m);
   12407       var b = (1 - y);
   12408 
   12409       return [r, g, b];
   12410     },
   12411     getRgbBuffer: function DeviceCmykCS_getRgbBuffer(colorBuf, bits) {
   12412       var scale = 1 / ((1 << bits) - 1);
   12413       var length = colorBuf.length / 4;
   12414       var rgbBuf = new Uint8Array(length * 3);
   12415       var rgbBufPos = 0;
   12416       var colorBufPos = 0;
   12417 
   12418       for (var i = 0; i < length; i++) {
   12419         var cmyk = [];
   12420         for (var j = 0; j < 4; ++j)
   12421           cmyk.push(scale * colorBuf[colorBufPos++]);
   12422 
   12423         var rgb = this.getRgb(cmyk);
   12424         for (var j = 0; j < 3; ++j)
   12425           rgbBuf[rgbBufPos++] = Math.round(rgb[j] * 255);
   12426       }
   12427 
   12428       return rgbBuf;
   12429     },
   12430     isDefaultDecode: function DeviceCmykCS_isDefaultDecode(decodeMap) {
   12431       return ColorSpace.isDefaultDecode(decodeMap, this.numComps);
   12432     }
   12433   };
   12434 
   12435   return DeviceCmykCS;
   12436 })();
   12437 
   12438 //
   12439 // LabCS: Based on "PDF Reference, Sixth Ed", p.250
   12440 //
   12441 var LabCS = (function LabCSClosure() {
   12442   function LabCS(whitePoint, blackPoint, range) {
   12443     this.name = 'Lab';
   12444     this.numComps = 3;
   12445     this.defaultColor = [0, 0, 0];
   12446 
   12447     if (!whitePoint)
   12448       error('WhitePoint missing - required for color space Lab');
   12449     blackPoint = blackPoint || [0, 0, 0];
   12450     range = range || [-100, 100, -100, 100];
   12451 
   12452     // Translate args to spec variables
   12453     this.XW = whitePoint[0];
   12454     this.YW = whitePoint[1];
   12455     this.ZW = whitePoint[2];
   12456     this.amin = range[0];
   12457     this.amax = range[1];
   12458     this.bmin = range[2];
   12459     this.bmax = range[3];
   12460 
   12461     // These are here just for completeness - the spec doesn't offer any
   12462     // formulas that use BlackPoint in Lab
   12463     this.XB = blackPoint[0];
   12464     this.YB = blackPoint[1];
   12465     this.ZB = blackPoint[2];
   12466 
   12467     // Validate vars as per spec
   12468     if (this.XW < 0 || this.ZW < 0 || this.YW !== 1)
   12469       error('Invalid WhitePoint components, no fallback available');
   12470 
   12471     if (this.XB < 0 || this.YB < 0 || this.ZB < 0) {
   12472       warn('Invalid BlackPoint, falling back to default');
   12473       this.XB = this.YB = this.ZB = 0;
   12474     }
   12475 
   12476     if (this.amin > this.amax || this.bmin > this.bmax) {
   12477       warn('Invalid Range, falling back to defaults');
   12478       this.amin = -100;
   12479       this.amax = 100;
   12480       this.bmin = -100;
   12481       this.bmax = 100;
   12482     }
   12483   };
   12484 
   12485   // Function g(x) from spec
   12486   function g(x) {
   12487     if (x >= 6 / 29)
   12488       return x * x * x;
   12489     else
   12490       return (108 / 841) * (x - 4 / 29);
   12491   }
   12492 
   12493   LabCS.prototype = {
   12494     getRgb: function LabCS_getRgb(color) {
   12495       // Ls,as,bs <---> L*,a*,b* in the spec
   12496       var Ls = color[0], as = color[1], bs = color[2];
   12497 
   12498       // Adjust limits of 'as' and 'bs'
   12499       as = as > this.amax ? this.amax : as;
   12500       as = as < this.amin ? this.amin : as;
   12501       bs = bs > this.bmax ? this.bmax : bs;
   12502       bs = bs < this.bmin ? this.bmin : bs;
   12503 
   12504       // Computes intermediate variables X,Y,Z as per spec
   12505       var M = (Ls + 16) / 116;
   12506       var L = M + (as / 500);
   12507       var N = M - (bs / 200);
   12508       var X = this.XW * g(L);
   12509       var Y = this.YW * g(M);
   12510       var Z = this.ZW * g(N);
   12511 
   12512       // XYZ to RGB 3x3 matrix, from:
   12513       // http://www.poynton.com/notes/colour_and_gamma/ColorFAQ.html#RTFToC18
   12514       var XYZtoRGB = [3.240479, -1.537150, -0.498535,
   12515                       -0.969256, 1.875992, 0.041556,
   12516                       0.055648, -0.204043, 1.057311];
   12517 
   12518       return Util.apply3dTransform(XYZtoRGB, [X, Y, Z]);
   12519     },
   12520     getRgbBuffer: function LabCS_getRgbBuffer(input, bits) {
   12521       if (bits == 8)
   12522         return input;
   12523       var scale = 255 / ((1 << bits) - 1);
   12524       var i, length = input.length / 3;
   12525       var rgbBuf = new Uint8Array(length);
   12526 
   12527       var j = 0;
   12528       for (i = 0; i < length; ++i) {
   12529         // Convert L*, a*, s* into RGB
   12530         var rgb = this.getRgb([input[i], input[i + 1], input[i + 2]]);
   12531         rgbBuf[j++] = rgb[0];
   12532         rgbBuf[j++] = rgb[1];
   12533         rgbBuf[j++] = rgb[2];
   12534       }
   12535 
   12536       return rgbBuf;
   12537     },
   12538     isDefaultDecode: function LabCS_isDefaultDecode(decodeMap) {
   12539       // From Table 90 in Adobe's:
   12540       // "Document management - Portable document format", 1st ed, 2008
   12541       if (decodeMap[0] === 0 && decodeMap[1] === 100 &&
   12542           decodeMap[2] === this.amin && decodeMap[3] === this.amax &&
   12543           decodeMap[4] === this.bmin && decodeMap[5] === this.bmax)
   12544         return true;
   12545       else
   12546         return false;
   12547     }
   12548   };
   12549   return LabCS;
   12550 })();
   12551 
   12552 /* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
   12553 /* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */
   12554 
   12555 'use strict';
   12556 
   12557 var ARCFourCipher = (function ARCFourCipherClosure() {
   12558   function ARCFourCipher(key) {
   12559     this.a = 0;
   12560     this.b = 0;
   12561     var s = new Uint8Array(256);
   12562     var i, j = 0, tmp, keyLength = key.length;
   12563     for (i = 0; i < 256; ++i)
   12564       s[i] = i;
   12565     for (i = 0; i < 256; ++i) {
   12566       tmp = s[i];
   12567       j = (j + tmp + key[i % keyLength]) & 0xFF;
   12568       s[i] = s[j];
   12569       s[j] = tmp;
   12570     }
   12571     this.s = s;
   12572   }
   12573 
   12574   ARCFourCipher.prototype = {
   12575     encryptBlock: function ARCFourCipher_encryptBlock(data) {
   12576       var i, n = data.length, tmp, tmp2;
   12577       var a = this.a, b = this.b, s = this.s;
   12578       var output = new Uint8Array(n);
   12579       for (i = 0; i < n; ++i) {
   12580         a = (a + 1) & 0xFF;
   12581         tmp = s[a];
   12582         b = (b + tmp) & 0xFF;
   12583         tmp2 = s[b];
   12584         s[a] = tmp2;
   12585         s[b] = tmp;
   12586         output[i] = data[i] ^ s[(tmp + tmp2) & 0xFF];
   12587       }
   12588       this.a = a;
   12589       this.b = b;
   12590       return output;
   12591     }
   12592   };
   12593   ARCFourCipher.prototype.decryptBlock = ARCFourCipher.prototype.encryptBlock;
   12594 
   12595   return ARCFourCipher;
   12596 })();
   12597 
   12598 var calculateMD5 = (function calculateMD5Closure() {
   12599   var r = new Uint8Array([
   12600     7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22,
   12601     5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20,
   12602     4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23,
   12603     6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21]);
   12604 
   12605   var k = new Int32Array([
   12606     -680876936, -389564586, 606105819, -1044525330, -176418897, 1200080426,
   12607     -1473231341, -45705983, 1770035416, -1958414417, -42063, -1990404162,
   12608     1804603682, -40341101, -1502002290, 1236535329, -165796510, -1069501632,
   12609     643717713, -373897302, -701558691, 38016083, -660478335, -405537848,
   12610     568446438, -1019803690, -187363961, 1163531501, -1444681467, -51403784,
   12611     1735328473, -1926607734, -378558, -2022574463, 1839030562, -35309556,
   12612     -1530992060, 1272893353, -155497632, -1094730640, 681279174, -358537222,
   12613     -722521979, 76029189, -640364487, -421815835, 530742520, -995338651,
   12614     -198630844, 1126891415, -1416354905, -57434055, 1700485571, -1894986606,
   12615     -1051523, -2054922799, 1873313359, -30611744, -1560198380, 1309151649,
   12616     -145523070, -1120210379, 718787259, -343485551]);
   12617 
   12618   function hash(data, offset, length) {
   12619     var h0 = 1732584193, h1 = -271733879, h2 = -1732584194, h3 = 271733878;
   12620     // pre-processing
   12621     var paddedLength = (length + 72) & ~63; // data + 9 extra bytes
   12622     var padded = new Uint8Array(paddedLength);
   12623     var i, j, n;
   12624     for (i = 0; i < length; ++i)
   12625       padded[i] = data[offset++];
   12626     padded[i++] = 0x80;
   12627     n = paddedLength - 8;
   12628     while (i < n)
   12629       padded[i++] = 0;
   12630     padded[i++] = (length << 3) & 0xFF;
   12631     padded[i++] = (length >> 5) & 0xFF;
   12632     padded[i++] = (length >> 13) & 0xFF;
   12633     padded[i++] = (length >> 21) & 0xFF;
   12634     padded[i++] = (length >>> 29) & 0xFF;
   12635     padded[i++] = 0;
   12636     padded[i++] = 0;
   12637     padded[i++] = 0;
   12638     // chunking
   12639     // TODO ArrayBuffer ?
   12640     var w = new Int32Array(16);
   12641     for (i = 0; i < paddedLength;) {
   12642       for (j = 0; j < 16; ++j, i += 4) {
   12643         w[j] = (padded[i] | (padded[i + 1] << 8) |
   12644                 (padded[i + 2] << 16) | (padded[i + 3] << 24));
   12645       }
   12646       var a = h0, b = h1, c = h2, d = h3, f, g;
   12647       for (j = 0; j < 64; ++j) {
   12648         if (j < 16) {
   12649           f = (b & c) | ((~b) & d);
   12650           g = j;
   12651         } else if (j < 32) {
   12652           f = (d & b) | ((~d) & c);
   12653           g = (5 * j + 1) & 15;
   12654         } else if (j < 48) {
   12655           f = b ^ c ^ d;
   12656           g = (3 * j + 5) & 15;
   12657         } else {
   12658           f = c ^ (b | (~d));
   12659           g = (7 * j) & 15;
   12660         }
   12661         var tmp = d, rotateArg = (a + f + k[j] + w[g]) | 0, rotate = r[j];
   12662         d = c;
   12663         c = b;
   12664         b = (b + ((rotateArg << rotate) | (rotateArg >>> (32 - rotate)))) | 0;
   12665         a = tmp;
   12666       }
   12667       h0 = (h0 + a) | 0;
   12668       h1 = (h1 + b) | 0;
   12669       h2 = (h2 + c) | 0;
   12670       h3 = (h3 + d) | 0;
   12671     }
   12672     return new Uint8Array([
   12673         h0 & 0xFF, (h0 >> 8) & 0xFF, (h0 >> 16) & 0xFF, (h0 >>> 24) & 0xFF,
   12674         h1 & 0xFF, (h1 >> 8) & 0xFF, (h1 >> 16) & 0xFF, (h1 >>> 24) & 0xFF,
   12675         h2 & 0xFF, (h2 >> 8) & 0xFF, (h2 >> 16) & 0xFF, (h2 >>> 24) & 0xFF,
   12676         h3 & 0xFF, (h3 >> 8) & 0xFF, (h3 >> 16) & 0xFF, (h3 >>> 24) & 0xFF
   12677     ]);
   12678   }
   12679   return hash;
   12680 })();
   12681 
   12682 var NullCipher = (function NullCipherClosure() {
   12683   function NullCipher() {
   12684   }
   12685 
   12686   NullCipher.prototype = {
   12687     decryptBlock: function NullCipher_decryptBlock(data) {
   12688       return data;
   12689     }
   12690   };
   12691 
   12692   return NullCipher;
   12693 })();
   12694 
   12695 var AES128Cipher = (function AES128CipherClosure() {
   12696   var rcon = new Uint8Array([
   12697     0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c,
   12698     0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a,
   12699     0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd,
   12700     0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a,
   12701     0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80,
   12702     0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6,
   12703     0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72,
   12704     0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc,
   12705     0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10,
   12706     0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e,
   12707     0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5,
   12708     0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94,
   12709     0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02,
   12710     0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d,
   12711     0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d,
   12712     0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f,
   12713     0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb,
   12714     0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c,
   12715     0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a,
   12716     0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd,
   12717     0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a,
   12718     0x74, 0xe8, 0xcb, 0x8d]);
   12719 
   12720   var s = new Uint8Array([
   12721     0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b,
   12722     0xfe, 0xd7, 0xab, 0x76, 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0,
   12723     0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, 0xb7, 0xfd, 0x93, 0x26,
   12724     0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15,
   12725     0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2,
   12726     0xeb, 0x27, 0xb2, 0x75, 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0,
   12727     0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, 0x53, 0xd1, 0x00, 0xed,
   12728     0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf,
   12729     0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f,
   12730     0x50, 0x3c, 0x9f, 0xa8, 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5,
   12731     0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, 0xcd, 0x0c, 0x13, 0xec,
   12732     0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73,
   12733     0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14,
   12734     0xde, 0x5e, 0x0b, 0xdb, 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c,
   12735     0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, 0xe7, 0xc8, 0x37, 0x6d,
   12736     0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08,
   12737     0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f,
   12738     0x4b, 0xbd, 0x8b, 0x8a, 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e,
   12739     0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, 0xe1, 0xf8, 0x98, 0x11,
   12740     0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf,
   12741     0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f,
   12742     0xb0, 0x54, 0xbb, 0x16]);
   12743 
   12744   var inv_s = new Uint8Array([
   12745     0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, 0xbf, 0x40, 0xa3, 0x9e,
   12746     0x81, 0xf3, 0xd7, 0xfb, 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87,
   12747     0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb, 0x54, 0x7b, 0x94, 0x32,
   12748     0xa6, 0xc2, 0x23, 0x3d, 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e,
   12749     0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2, 0x76, 0x5b, 0xa2, 0x49,
   12750     0x6d, 0x8b, 0xd1, 0x25, 0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16,
   12751     0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92, 0x6c, 0x70, 0x48, 0x50,
   12752     0xfd, 0xed, 0xb9, 0xda, 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84,
   12753     0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a, 0xf7, 0xe4, 0x58, 0x05,
   12754     0xb8, 0xb3, 0x45, 0x06, 0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02,
   12755     0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b, 0x3a, 0x91, 0x11, 0x41,
   12756     0x4f, 0x67, 0xdc, 0xea, 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73,
   12757     0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85, 0xe2, 0xf9, 0x37, 0xe8,
   12758     0x1c, 0x75, 0xdf, 0x6e, 0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89,
   12759     0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b, 0xfc, 0x56, 0x3e, 0x4b,
   12760     0xc6, 0xd2, 0x79, 0x20, 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4,
   12761     0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31, 0xb1, 0x12, 0x10, 0x59,
   12762     0x27, 0x80, 0xec, 0x5f, 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d,
   12763     0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef, 0xa0, 0xe0, 0x3b, 0x4d,
   12764     0xae, 0x2a, 0xf5, 0xb0, 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61,
   12765     0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, 0xe1, 0x69, 0x14, 0x63,
   12766     0x55, 0x21, 0x0c, 0x7d]);
   12767 
   12768   var mix = new Uint32Array([
   12769     0x00000000, 0x0e090d0b, 0x1c121a16, 0x121b171d, 0x3824342c, 0x362d3927,
   12770     0x24362e3a, 0x2a3f2331, 0x70486858, 0x7e416553, 0x6c5a724e, 0x62537f45,
   12771     0x486c5c74, 0x4665517f, 0x547e4662, 0x5a774b69, 0xe090d0b0, 0xee99ddbb,
   12772     0xfc82caa6, 0xf28bc7ad, 0xd8b4e49c, 0xd6bde997, 0xc4a6fe8a, 0xcaaff381,
   12773     0x90d8b8e8, 0x9ed1b5e3, 0x8ccaa2fe, 0x82c3aff5, 0xa8fc8cc4, 0xa6f581cf,
   12774     0xb4ee96d2, 0xbae79bd9, 0xdb3bbb7b, 0xd532b670, 0xc729a16d, 0xc920ac66,
   12775     0xe31f8f57, 0xed16825c, 0xff0d9541, 0xf104984a, 0xab73d323, 0xa57ade28,
   12776     0xb761c935, 0xb968c43e, 0x9357e70f, 0x9d5eea04, 0x8f45fd19, 0x814cf012,
   12777     0x3bab6bcb, 0x35a266c0, 0x27b971dd, 0x29b07cd6, 0x038f5fe7, 0x0d8652ec,
   12778     0x1f9d45f1, 0x119448fa, 0x4be30393, 0x45ea0e98, 0x57f11985, 0x59f8148e,
   12779     0x73c737bf, 0x7dce3ab4, 0x6fd52da9, 0x61dc20a2, 0xad766df6, 0xa37f60fd,
   12780     0xb16477e0, 0xbf6d7aeb, 0x955259da, 0x9b5b54d1, 0x894043cc, 0x87494ec7,
   12781     0xdd3e05ae, 0xd33708a5, 0xc12c1fb8, 0xcf2512b3, 0xe51a3182, 0xeb133c89,
   12782     0xf9082b94, 0xf701269f, 0x4de6bd46, 0x43efb04d, 0x51f4a750, 0x5ffdaa5b,
   12783     0x75c2896a, 0x7bcb8461, 0x69d0937c, 0x67d99e77, 0x3daed51e, 0x33a7d815,
   12784     0x21bccf08, 0x2fb5c203, 0x058ae132, 0x0b83ec39, 0x1998fb24, 0x1791f62f,
   12785     0x764dd68d, 0x7844db86, 0x6a5fcc9b, 0x6456c190, 0x4e69e2a1, 0x4060efaa,
   12786     0x527bf8b7, 0x5c72f5bc, 0x0605bed5, 0x080cb3de, 0x1a17a4c3, 0x141ea9c8,
   12787     0x3e218af9, 0x302887f2, 0x223390ef, 0x2c3a9de4, 0x96dd063d, 0x98d40b36,
   12788     0x8acf1c2b, 0x84c61120, 0xaef93211, 0xa0f03f1a, 0xb2eb2807, 0xbce2250c,
   12789     0xe6956e65, 0xe89c636e, 0xfa877473, 0xf48e7978, 0xdeb15a49, 0xd0b85742,
   12790     0xc2a3405f, 0xccaa4d54, 0x41ecdaf7, 0x4fe5d7fc, 0x5dfec0e1, 0x53f7cdea,
   12791     0x79c8eedb, 0x77c1e3d0, 0x65daf4cd, 0x6bd3f9c6, 0x31a4b2af, 0x3fadbfa4,
   12792     0x2db6a8b9, 0x23bfa5b2, 0x09808683, 0x07898b88, 0x15929c95, 0x1b9b919e,
   12793     0xa17c0a47, 0xaf75074c, 0xbd6e1051, 0xb3671d5a, 0x99583e6b, 0x97513360,
   12794     0x854a247d, 0x8b432976, 0xd134621f, 0xdf3d6f14, 0xcd267809, 0xc32f7502,
   12795     0xe9105633, 0xe7195b38, 0xf5024c25, 0xfb0b412e, 0x9ad7618c, 0x94de6c87,
   12796     0x86c57b9a, 0x88cc7691, 0xa2f355a0, 0xacfa58ab, 0xbee14fb6, 0xb0e842bd,
   12797     0xea9f09d4, 0xe49604df, 0xf68d13c2, 0xf8841ec9, 0xd2bb3df8, 0xdcb230f3,
   12798     0xcea927ee, 0xc0a02ae5, 0x7a47b13c, 0x744ebc37, 0x6655ab2a, 0x685ca621,
   12799     0x42638510, 0x4c6a881b, 0x5e719f06, 0x5078920d, 0x0a0fd964, 0x0406d46f,
   12800     0x161dc372, 0x1814ce79, 0x322bed48, 0x3c22e043, 0x2e39f75e, 0x2030fa55,
   12801     0xec9ab701, 0xe293ba0a, 0xf088ad17, 0xfe81a01c, 0xd4be832d, 0xdab78e26,
   12802     0xc8ac993b, 0xc6a59430, 0x9cd2df59, 0x92dbd252, 0x80c0c54f, 0x8ec9c844,
   12803     0xa4f6eb75, 0xaaffe67e, 0xb8e4f163, 0xb6edfc68, 0x0c0a67b1, 0x02036aba,
   12804     0x10187da7, 0x1e1170ac, 0x342e539d, 0x3a275e96, 0x283c498b, 0x26354480,
   12805     0x7c420fe9, 0x724b02e2, 0x605015ff, 0x6e5918f4, 0x44663bc5, 0x4a6f36ce,
   12806     0x587421d3, 0x567d2cd8, 0x37a10c7a, 0x39a80171, 0x2bb3166c, 0x25ba1b67,
   12807     0x0f853856, 0x018c355d, 0x13972240, 0x1d9e2f4b, 0x47e96422, 0x49e06929,
   12808     0x5bfb7e34, 0x55f2733f, 0x7fcd500e, 0x71c45d05, 0x63df4a18, 0x6dd64713,
   12809     0xd731dcca, 0xd938d1c1, 0xcb23c6dc, 0xc52acbd7, 0xef15e8e6, 0xe11ce5ed,
   12810     0xf307f2f0, 0xfd0efffb, 0xa779b492, 0xa970b999, 0xbb6bae84, 0xb562a38f,
   12811     0x9f5d80be, 0x91548db5, 0x834f9aa8, 0x8d4697a3]);
   12812 
   12813   function expandKey128(cipherKey) {
   12814     var b = 176, result = new Uint8Array(b);
   12815     result.set(cipherKey);
   12816     for (var j = 16, i = 1; j < b; ++i) {
   12817       // RotWord
   12818       var t1 = result[j - 3], t2 = result[j - 2],
   12819           t3 = result[j - 1], t4 = result[j - 4];
   12820       // SubWord
   12821       t1 = s[t1]; t2 = s[t2]; t3 = s[t3]; t4 = s[t4];
   12822       // Rcon
   12823       t1 = t1 ^ rcon[i];
   12824       for (var n = 0; n < 4; ++n) {
   12825         result[j] = (t1 ^= result[j - 16]); j++;
   12826         result[j] = (t2 ^= result[j - 16]); j++;
   12827         result[j] = (t3 ^= result[j - 16]); j++;
   12828         result[j] = (t4 ^= result[j - 16]); j++;
   12829       }
   12830     }
   12831     return result;
   12832   }
   12833 
   12834   function decrypt128(input, key) {
   12835     var state = new Uint8Array(16);
   12836     state.set(input);
   12837     var i, j, k;
   12838     var t, u, v;
   12839     // AddRoundKey
   12840     for (j = 0, k = 160; j < 16; ++j, ++k)
   12841       state[j] ^= key[k];
   12842     for (i = 9; i >= 1; --i) {
   12843       // InvShiftRows
   12844       t = state[13]; state[13] = state[9]; state[9] = state[5];
   12845       state[5] = state[1]; state[1] = t;
   12846       t = state[14]; u = state[10]; state[14] = state[6];
   12847       state[10] = state[2]; state[6] = t; state[2] = u;
   12848       t = state[15]; u = state[11]; v = state[7]; state[15] = state[3];
   12849       state[11] = t; state[7] = u; state[3] = v;
   12850       // InvSubBytes
   12851       for (j = 0; j < 16; ++j)
   12852         state[j] = inv_s[state[j]];
   12853       // AddRoundKey
   12854       for (j = 0, k = i * 16; j < 16; ++j, ++k)
   12855         state[j] ^= key[k];
   12856       // InvMixColumns
   12857       for (j = 0; j < 16; j += 4) {
   12858         var s0 = mix[state[j]], s1 = mix[state[j + 1]],
   12859             s2 = mix[state[j + 2]], s3 = mix[state[j + 3]];
   12860         t = (s0 ^ (s1 >>> 8) ^ (s1 << 24) ^ (s2 >>> 16) ^ (s2 << 16) ^
   12861             (s3 >>> 24) ^ (s3 << 8));
   12862         state[j] = (t >>> 24) & 0xFF;
   12863         state[j + 1] = (t >> 16) & 0xFF;
   12864         state[j + 2] = (t >> 8) & 0xFF;
   12865         state[j + 3] = t & 0xFF;
   12866       }
   12867     }
   12868     // InvShiftRows
   12869     t = state[13]; state[13] = state[9]; state[9] = state[5];
   12870     state[5] = state[1]; state[1] = t;
   12871     t = state[14]; u = state[10]; state[14] = state[6];
   12872     state[10] = state[2]; state[6] = t; state[2] = u;
   12873     t = state[15]; u = state[11]; v = state[7]; state[15] = state[3];
   12874     state[11] = t; state[7] = u; state[3] = v;
   12875     for (j = 0; j < 16; ++j) {
   12876       // InvSubBytes
   12877       state[j] = inv_s[state[j]];
   12878       // AddRoundKey
   12879       state[j] ^= key[j];
   12880     }
   12881     return state;
   12882   }
   12883 
   12884   function AES128Cipher(key) {
   12885     this.key = expandKey128(key);
   12886     this.buffer = new Uint8Array(16);
   12887     this.bufferPosition = 0;
   12888   }
   12889 
   12890   function decryptBlock2(data) {
   12891     var i, j, ii, sourceLength = data.length,
   12892         buffer = this.buffer, bufferLength = this.bufferPosition,
   12893         result = [], iv = this.iv;
   12894     for (i = 0; i < sourceLength; ++i) {
   12895       buffer[bufferLength] = data[i];
   12896       ++bufferLength;
   12897       if (bufferLength < 16)
   12898         continue;
   12899       // buffer is full, decrypting
   12900       var plain = decrypt128(buffer, this.key);
   12901       // xor-ing the IV vector to get plain text
   12902       for (j = 0; j < 16; ++j)
   12903         plain[j] ^= iv[j];
   12904       iv = buffer;
   12905       result.push(plain);
   12906       buffer = new Uint8Array(16);
   12907       bufferLength = 0;
   12908     }
   12909     // saving incomplete buffer
   12910     this.buffer = buffer;
   12911     this.bufferLength = bufferLength;
   12912     this.iv = iv;
   12913     if (result.length == 0)
   12914       return new Uint8Array([]);
   12915     if (result.length == 1)
   12916       return result[0];
   12917     // combining plain text blocks into one
   12918     var output = new Uint8Array(16 * result.length);
   12919     for (i = 0, j = 0, ii = result.length; i < ii; ++i, j += 16)
   12920       output.set(result[i], j);
   12921     return output;
   12922   }
   12923 
   12924   AES128Cipher.prototype = {
   12925     decryptBlock: function AES128Cipher_decryptBlock(data) {
   12926       var i, sourceLength = data.length;
   12927       var buffer = this.buffer, bufferLength = this.bufferPosition;
   12928       // waiting for IV values -- they are at the start of the stream
   12929       for (i = 0; bufferLength < 16 && i < sourceLength; ++i, ++bufferLength)
   12930         buffer[bufferLength] = data[i];
   12931       if (bufferLength < 16) {
   12932         // need more data
   12933         this.bufferLength = bufferLength;
   12934         return new Uint8Array([]);
   12935       }
   12936       this.iv = buffer;
   12937       this.buffer = new Uint8Array(16);
   12938       this.bufferLength = 0;
   12939       // starting decryption
   12940       this.decryptBlock = decryptBlock2;
   12941       return this.decryptBlock(data.subarray(16));
   12942     }
   12943   };
   12944 
   12945   return AES128Cipher;
   12946 })();
   12947 
   12948 var CipherTransform = (function CipherTransformClosure() {
   12949   function CipherTransform(stringCipherConstructor, streamCipherConstructor) {
   12950     this.stringCipherConstructor = stringCipherConstructor;
   12951     this.streamCipherConstructor = streamCipherConstructor;
   12952   }
   12953   CipherTransform.prototype = {
   12954     createStream: function CipherTransform_createStream(stream) {
   12955       var cipher = new this.streamCipherConstructor();
   12956       return new DecryptStream(stream,
   12957         function cipherTransformDecryptStream(data) {
   12958           return cipher.decryptBlock(data);
   12959         }
   12960       );
   12961     },
   12962     decryptString: function CipherTransform_decryptString(s) {
   12963       var cipher = new this.stringCipherConstructor();
   12964       var data = stringToBytes(s);
   12965       data = cipher.decryptBlock(data);
   12966       return bytesToString(data);
   12967     }
   12968   };
   12969   return CipherTransform;
   12970 })();
   12971 
   12972 var CipherTransformFactory = (function CipherTransformFactoryClosure() {
   12973   function prepareKeyData(fileId, password, ownerPassword, userPassword,
   12974                           flags, revision, keyLength, encryptMetadata) {
   12975     var defaultPasswordBytes = new Uint8Array([
   12976       0x28, 0xBF, 0x4E, 0x5E, 0x4E, 0x75, 0x8A, 0x41,
   12977       0x64, 0x00, 0x4E, 0x56, 0xFF, 0xFA, 0x01, 0x08,
   12978       0x2E, 0x2E, 0x00, 0xB6, 0xD0, 0x68, 0x3E, 0x80,
   12979       0x2F, 0x0C, 0xA9, 0xFE, 0x64, 0x53, 0x69, 0x7A]);
   12980     var hashData = new Uint8Array(100), i = 0, j, n;
   12981     if (password) {
   12982       n = Math.min(32, password.length);
   12983       for (; i < n; ++i)
   12984         hashData[i] = password[i];
   12985     }
   12986     j = 0;
   12987     while (i < 32) {
   12988       hashData[i++] = defaultPasswordBytes[j++];
   12989     }
   12990     // as now the padded password in the hashData[0..i]
   12991     for (j = 0, n = ownerPassword.length; j < n; ++j)
   12992       hashData[i++] = ownerPassword[j];
   12993     hashData[i++] = flags & 0xFF;
   12994     hashData[i++] = (flags >> 8) & 0xFF;
   12995     hashData[i++] = (flags >> 16) & 0xFF;
   12996     hashData[i++] = (flags >>> 24) & 0xFF;
   12997     for (j = 0, n = fileId.length; j < n; ++j)
   12998       hashData[i++] = fileId[j];
   12999     if (revision >= 4 && !encryptMetadata) {
   13000       hashData[i++] = 0xFF;
   13001       hashData[i++] = 0xFF;
   13002       hashData[i++] = 0xFF;
   13003       hashData[i++] = 0xFF;
   13004     }
   13005     var hash = calculateMD5(hashData, 0, i);
   13006     var keyLengthInBytes = keyLength >> 3;
   13007     if (revision >= 3) {
   13008       for (j = 0; j < 50; ++j) {
   13009          hash = calculateMD5(hash, 0, keyLengthInBytes);
   13010       }
   13011     }
   13012     var encryptionKey = hash.subarray(0, keyLengthInBytes);
   13013     var cipher, checkData;
   13014 
   13015     if (revision >= 3) {
   13016       // padded password in hashData, we can use this array for user
   13017       // password check
   13018       i = 32;
   13019       for (j = 0, n = fileId.length; j < n; ++j)
   13020         hashData[i++] = fileId[j];
   13021       cipher = new ARCFourCipher(encryptionKey);
   13022       var checkData = cipher.encryptBlock(calculateMD5(hashData, 0, i));
   13023       n = encryptionKey.length;
   13024       var derivedKey = new Uint8Array(n), k;
   13025       for (j = 1; j <= 19; ++j) {
   13026         for (k = 0; k < n; ++k)
   13027           derivedKey[k] = encryptionKey[k] ^ j;
   13028         cipher = new ARCFourCipher(derivedKey);
   13029         checkData = cipher.encryptBlock(checkData);
   13030       }
   13031     } else {
   13032       cipher = new ARCFourCipher(encryptionKey);
   13033       checkData = cipher.encryptBlock(hashData.subarray(0, 32));
   13034     }
   13035     for (j = 0, n = checkData.length; j < n; ++j) {
   13036       if (userPassword[j] != checkData[j])
   13037         error('incorrect password');
   13038     }
   13039     return encryptionKey;
   13040   }
   13041 
   13042   var identityName = new Name('Identity');
   13043 
   13044   function CipherTransformFactory(dict, fileId, password) {
   13045     var filter = dict.get('Filter');
   13046     if (!isName(filter) || filter.name != 'Standard')
   13047       error('unknown encryption method');
   13048     this.dict = dict;
   13049     var algorithm = dict.get('V');
   13050     if (!isInt(algorithm) ||
   13051       (algorithm != 1 && algorithm != 2 && algorithm != 4))
   13052       error('unsupported encryption algorithm');
   13053     this.algorithm = algorithm;
   13054     var keyLength = dict.get('Length') || 40;
   13055     if (!isInt(keyLength) ||
   13056       keyLength < 40 || (keyLength % 8) != 0)
   13057       error('invalid key length');
   13058     // prepare keys
   13059     var ownerPassword = stringToBytes(dict.get('O'));
   13060     var userPassword = stringToBytes(dict.get('U'));
   13061     var flags = dict.get('P');
   13062     var revision = dict.get('R');
   13063     var encryptMetadata =
   13064       dict.get('EncryptMetadata') !== false; // makes true as default value
   13065     var fileIdBytes = stringToBytes(fileId);
   13066     var passwordBytes;
   13067     if (password)
   13068       passwordBytes = stringToBytes(password);
   13069 
   13070     this.encryptionKey = prepareKeyData(fileIdBytes, passwordBytes,
   13071                                         ownerPassword, userPassword,
   13072                                         flags, revision,
   13073                                         keyLength, encryptMetadata);
   13074     if (algorithm == 4) {
   13075       this.cf = dict.get('CF');
   13076       this.stmf = dict.get('StmF') || identityName;
   13077       this.strf = dict.get('StrF') || identityName;
   13078       this.eff = dict.get('EFF') || this.strf;
   13079     }
   13080   }
   13081 
   13082   function buildObjectKey(num, gen, encryptionKey, isAes) {
   13083     var key = new Uint8Array(encryptionKey.length + 9), i, n;
   13084     for (i = 0, n = encryptionKey.length; i < n; ++i)
   13085       key[i] = encryptionKey[i];
   13086     key[i++] = num & 0xFF;
   13087     key[i++] = (num >> 8) & 0xFF;
   13088     key[i++] = (num >> 16) & 0xFF;
   13089     key[i++] = gen & 0xFF;
   13090     key[i++] = (gen >> 8) & 0xFF;
   13091     if (isAes) {
   13092       key[i++] = 0x73;
   13093       key[i++] = 0x41;
   13094       key[i++] = 0x6C;
   13095       key[i++] = 0x54;
   13096     }
   13097     var hash = calculateMD5(key, 0, i);
   13098     return hash.subarray(0, Math.min(encryptionKey.length + 5, 16));
   13099   }
   13100 
   13101   function buildCipherConstructor(cf, name, num, gen, key) {
   13102     var cryptFilter = cf.get(name.name);
   13103     var cfm;
   13104     if (cryptFilter != null)
   13105       cfm = cryptFilter.get('CFM');
   13106     if (!cfm || cfm.name == 'None') {
   13107       return function cipherTransformFactoryBuildCipherConstructorNone() {
   13108         return new NullCipher();
   13109       };
   13110     }
   13111     if ('V2' == cfm.name) {
   13112       return function cipherTransformFactoryBuildCipherConstructorV2() {
   13113         return new ARCFourCipher(
   13114           buildObjectKey(num, gen, key, false));
   13115       };
   13116     }
   13117     if ('AESV2' == cfm.name) {
   13118       return function cipherTransformFactoryBuildCipherConstructorAESV2() {
   13119         return new AES128Cipher(
   13120           buildObjectKey(num, gen, key, true));
   13121       };
   13122     }
   13123     error('Unknown crypto method');
   13124   }
   13125 
   13126   CipherTransformFactory.prototype = {
   13127     createCipherTransform:
   13128       function CipherTransformFactory_createCipherTransform(num, gen) {
   13129       if (this.algorithm == 4) {
   13130         return new CipherTransform(
   13131           buildCipherConstructor(this.cf, this.stmf,
   13132             num, gen, this.encryptionKey),
   13133           buildCipherConstructor(this.cf, this.strf,
   13134             num, gen, this.encryptionKey));
   13135       }
   13136       // algorithms 1 and 2
   13137       var key = buildObjectKey(num, gen, this.encryptionKey, false);
   13138       var cipherConstructor = function buildCipherCipherConstructor() {
   13139         return new ARCFourCipher(key);
   13140       };
   13141       return new CipherTransform(cipherConstructor, cipherConstructor);
   13142     }
   13143   };
   13144 
   13145   return CipherTransformFactory;
   13146 })();
   13147 
   13148 
   13149 /* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
   13150 /* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */
   13151 
   13152 'use strict';
   13153 
   13154 var PartialEvaluator = (function PartialEvaluatorClosure() {
   13155   function PartialEvaluator(xref, handler, uniquePrefix) {
   13156     this.state = new EvalState();
   13157     this.stateStack = [];
   13158 
   13159     this.xref = xref;
   13160     this.handler = handler;
   13161     this.uniquePrefix = uniquePrefix;
   13162     this.objIdCounter = 0;
   13163   }
   13164 
   13165   var OP_MAP = {
   13166     // Graphics state
   13167     w: 'setLineWidth',
   13168     J: 'setLineCap',
   13169     j: 'setLineJoin',
   13170     M: 'setMiterLimit',
   13171     d: 'setDash',
   13172     ri: 'setRenderingIntent',
   13173     i: 'setFlatness',
   13174     gs: 'setGState',
   13175     q: 'save',
   13176     Q: 'restore',
   13177     cm: 'transform',
   13178 
   13179     // Path
   13180     m: 'moveTo',
   13181     l: 'lineTo',
   13182     c: 'curveTo',
   13183     v: 'curveTo2',
   13184     y: 'curveTo3',
   13185     h: 'closePath',
   13186     re: 'rectangle',
   13187     S: 'stroke',
   13188     s: 'closeStroke',
   13189     f: 'fill',
   13190     F: 'fill',
   13191     'f*': 'eoFill',
   13192     B: 'fillStroke',
   13193     'B*': 'eoFillStroke',
   13194     b: 'closeFillStroke',
   13195     'b*': 'closeEOFillStroke',
   13196     n: 'endPath',
   13197 
   13198     // Clipping
   13199     W: 'clip',
   13200     'W*': 'eoClip',
   13201 
   13202     // Text
   13203     BT: 'beginText',
   13204     ET: 'endText',
   13205     Tc: 'setCharSpacing',
   13206     Tw: 'setWordSpacing',
   13207     Tz: 'setHScale',
   13208     TL: 'setLeading',
   13209     Tf: 'setFont',
   13210     Tr: 'setTextRenderingMode',
   13211     Ts: 'setTextRise',
   13212     Td: 'moveText',
   13213     TD: 'setLeadingMoveText',
   13214     Tm: 'setTextMatrix',
   13215     'T*': 'nextLine',
   13216     Tj: 'showText',
   13217     TJ: 'showSpacedText',
   13218     "'": 'nextLineShowText',
   13219     '"': 'nextLineSetSpacingShowText',
   13220 
   13221     // Type3 fonts
   13222     d0: 'setCharWidth',
   13223     d1: 'setCharWidthAndBounds',
   13224 
   13225     // Color
   13226     CS: 'setStrokeColorSpace',
   13227     cs: 'setFillColorSpace',
   13228     SC: 'setStrokeColor',
   13229     SCN: 'setStrokeColorN',
   13230     sc: 'setFillColor',
   13231     scn: 'setFillColorN',
   13232     G: 'setStrokeGray',
   13233     g: 'setFillGray',
   13234     RG: 'setStrokeRGBColor',
   13235     rg: 'setFillRGBColor',
   13236     K: 'setStrokeCMYKColor',
   13237     k: 'setFillCMYKColor',
   13238 
   13239     // Shading
   13240     sh: 'shadingFill',
   13241 
   13242     // Images
   13243     BI: 'beginInlineImage',
   13244     ID: 'beginImageData',
   13245     EI: 'endInlineImage',
   13246 
   13247     // XObjects
   13248     Do: 'paintXObject',
   13249 
   13250     // Marked content
   13251     MP: 'markPoint',
   13252     DP: 'markPointProps',
   13253     BMC: 'beginMarkedContent',
   13254     BDC: 'beginMarkedContentProps',
   13255     EMC: 'endMarkedContent',
   13256 
   13257     // Compatibility
   13258     BX: 'beginCompat',
   13259     EX: 'endCompat'
   13260   };
   13261 
   13262   function splitCombinedOperations(operations) {
   13263     // Two operations can be combined together, trying to find which two
   13264     // operations were concatenated.
   13265     for (var i = operations.length - 1; i > 0; i--) {
   13266       var op1 = operations.substring(0, i), op2 = operations.substring(i);
   13267       if (op1 in OP_MAP && op2 in OP_MAP)
   13268         return [op1, op2]; // operations found
   13269     }
   13270     return null;
   13271   }
   13272 
   13273   PartialEvaluator.prototype = {
   13274     getOperatorList: function PartialEvaluator_getOperatorList(stream,
   13275                                                                resources,
   13276                                                                dependency,
   13277                                                                queue) {
   13278 
   13279       var self = this;
   13280       var xref = this.xref;
   13281       var handler = this.handler;
   13282       var uniquePrefix = this.uniquePrefix || '';
   13283 
   13284       function insertDependency(depList) {
   13285         fnArray.push('dependency');
   13286         argsArray.push(depList);
   13287         for (var i = 0, ii = depList.length; i < ii; i++) {
   13288           var dep = depList[i];
   13289           if (dependency.indexOf(dep) == -1) {
   13290             dependency.push(depList[i]);
   13291           }
   13292         }
   13293       }
   13294 
   13295       function handleSetFont(fontName, font) {
   13296         var loadedName = null;
   13297 
   13298         var fontRes = resources.get('Font');
   13299 
   13300         assert(fontRes, 'fontRes not available');
   13301 
   13302         font = xref.fetchIfRef(font) || fontRes.get(fontName);
   13303         assertWellFormed(isDict(font));
   13304         ++self.objIdCounter;
   13305         if (!font.translated) {
   13306           font.translated = self.translateFont(font, xref, resources,
   13307                                                dependency);
   13308           if (font.translated) {
   13309             // keep track of each font we translated so the caller can
   13310             // load them asynchronously before calling display on a page
   13311             loadedName = 'font_' + uniquePrefix + self.objIdCounter;
   13312             font.translated.properties.loadedName = loadedName;
   13313             font.loadedName = loadedName;
   13314 
   13315             var translated = font.translated;
   13316             // Convert the file to an ArrayBuffer which will be turned back into
   13317             // a Stream in the main thread.
   13318             if (translated.file)
   13319               translated.file = translated.file.getBytes();
   13320             if (translated.properties.file) {
   13321               translated.properties.file =
   13322                   translated.properties.file.getBytes();
   13323             }
   13324 
   13325             handler.send('obj', [
   13326                 loadedName,
   13327                 'Font',
   13328                 translated.name,
   13329                 translated.file,
   13330                 translated.properties
   13331             ]);
   13332           }
   13333         }
   13334         loadedName = loadedName || font.loadedName;
   13335 
   13336         // Ensure the font is ready before the font is set
   13337         // and later on used for drawing.
   13338         // OPTIMIZE: This should get insert to the operatorList only once per
   13339         // page.
   13340         insertDependency([loadedName]);
   13341         return loadedName;
   13342       }
   13343 
   13344       function buildPaintImageXObject(image, inline) {
   13345         var dict = image.dict;
   13346         var w = dict.get('Width', 'W');
   13347         var h = dict.get('Height', 'H');
   13348 
   13349         var imageMask = dict.get('ImageMask', 'IM') || false;
   13350         if (imageMask) {
   13351           // This depends on a tmpCanvas beeing filled with the
   13352           // current fillStyle, such that processing the pixel
   13353           // data can't be done here. Instead of creating a
   13354           // complete PDFImage, only read the information needed
   13355           // for later.
   13356 
   13357           var width = dict.get('Width', 'W');
   13358           var height = dict.get('Height', 'H');
   13359           var bitStrideLength = (width + 7) >> 3;
   13360           var imgArray = image.getBytes(bitStrideLength * height);
   13361           var decode = dict.get('Decode', 'D');
   13362           var inverseDecode = !!decode && decode[0] > 0;
   13363 
   13364           fn = 'paintImageMaskXObject';
   13365           args = [imgArray, inverseDecode, width, height];
   13366           return;
   13367         }
   13368 
   13369         // If there is no imageMask, create the PDFImage and a lot
   13370         // of image processing can be done here.
   13371         var objId = 'img_' + uniquePrefix + (++self.objIdCounter);
   13372         insertDependency([objId]);
   13373         args = [objId, w, h];
   13374 
   13375         var softMask = dict.get('SMask', 'IM') || false;
   13376         if (!softMask && image instanceof JpegStream &&
   13377             image.isNativelySupported(xref, resources)) {
   13378           // These JPEGs don't need any more processing so we can just send it.
   13379           fn = 'paintJpegXObject';
   13380           handler.send('obj', [objId, 'JpegStream', image.getIR()]);
   13381           return;
   13382         }
   13383 
   13384         fn = 'paintImageXObject';
   13385 
   13386         PDFImage.buildImage(function(imageObj) {
   13387             var drawWidth = imageObj.drawWidth;
   13388             var drawHeight = imageObj.drawHeight;
   13389             var imgData = {
   13390               width: drawWidth,
   13391               height: drawHeight,
   13392               data: new Uint8Array(drawWidth * drawHeight * 4)
   13393             };
   13394             var pixels = imgData.data;
   13395             imageObj.fillRgbaBuffer(pixels, drawWidth, drawHeight);
   13396             handler.send('obj', [objId, 'Image', imgData]);
   13397           }, handler, xref, resources, image, inline);
   13398       }
   13399 
   13400       if (!queue)
   13401         queue = {};
   13402 
   13403       if (!queue.argsArray) {
   13404         queue.argsArray = [];
   13405       }
   13406       if (!queue.fnArray) {
   13407         queue.fnArray = [];
   13408       }
   13409 
   13410       var fnArray = queue.fnArray, argsArray = queue.argsArray;
   13411       var dependencyArray = dependency || [];
   13412 
   13413       resources = resources || new Dict();
   13414       var xobjs = resources.get('XObject') || new Dict();
   13415       var patterns = resources.get('Pattern') || new Dict();
   13416       var parser = new Parser(new Lexer(stream), false, xref);
   13417       var res = resources;
   13418       var hasNextObj = false, nextObj;
   13419       var args = [], obj;
   13420       var TILING_PATTERN = 1, SHADING_PATTERN = 2;
   13421 
   13422       while (true) {
   13423         if (hasNextObj) {
   13424           obj = nextObj;
   13425           hasNextObj = false;
   13426         } else {
   13427           obj = parser.getObj();
   13428           if (isEOF(obj))
   13429             break;
   13430         }
   13431 
   13432         if (isCmd(obj)) {
   13433           var cmd = obj.cmd;
   13434           var fn = OP_MAP[cmd];
   13435           if (!fn) {
   13436             // invalid content command, trying to recover
   13437             var cmds = splitCombinedOperations(cmd);
   13438             if (cmds) {
   13439               cmd = cmds[0];
   13440               fn = OP_MAP[cmd];
   13441               // feeding other command on the next interation
   13442               hasNextObj = true;
   13443               nextObj = Cmd.get(cmds[1]);
   13444             }
   13445           }
   13446           assertWellFormed(fn, 'Unknown command "' + cmd + '"');
   13447           // TODO figure out how to type-check vararg functions
   13448 
   13449           if ((cmd == 'SCN' || cmd == 'scn') && !args[args.length - 1].code) {
   13450             // compile tiling patterns
   13451             var patternName = args[args.length - 1];
   13452             // SCN/scn applies patterns along with normal colors
   13453             if (isName(patternName)) {
   13454               var pattern = patterns.get(patternName.name);
   13455               if (pattern) {
   13456                 var dict = isStream(pattern) ? pattern.dict : pattern;
   13457                 var typeNum = dict.get('PatternType');
   13458 
   13459                 if (typeNum == TILING_PATTERN) {
   13460                   // Create an IR of the pattern code.
   13461                   var depIdx = dependencyArray.length;
   13462                   var operatorList = this.getOperatorList(pattern,
   13463                       dict.get('Resources') || resources, dependencyArray);
   13464 
   13465                   // Add the dependencies that are required to execute the
   13466                   // operatorList.
   13467                   insertDependency(dependencyArray.slice(depIdx));
   13468 
   13469                   args = TilingPattern.getIR(operatorList, dict, args);
   13470                 }
   13471                 else if (typeNum == SHADING_PATTERN) {
   13472                   var shading = dict.get('Shading');
   13473                   var matrix = dict.get('Matrix');
   13474                   var pattern = Pattern.parseShading(shading, matrix, xref,
   13475                                                      res);
   13476                   args = pattern.getIR();
   13477                 } else {
   13478                   error('Unkown PatternType ' + typeNum);
   13479                 }
   13480               }
   13481             }
   13482           } else if (cmd == 'Do' && !args[0].code) {
   13483             // eagerly compile XForm objects
   13484             var name = args[0].name;
   13485             var xobj = xobjs.get(name);
   13486             if (xobj) {
   13487               assertWellFormed(isStream(xobj), 'XObject should be a stream');
   13488 
   13489               var type = xobj.dict.get('Subtype');
   13490               assertWellFormed(
   13491                 isName(type),
   13492                 'XObject should have a Name subtype'
   13493               );
   13494 
   13495               if ('Form' == type.name) {
   13496                 var matrix = xobj.dict.get('Matrix');
   13497                 var bbox = xobj.dict.get('BBox');
   13498 
   13499                 fnArray.push('paintFormXObjectBegin');
   13500                 argsArray.push([matrix, bbox]);
   13501 
   13502                 // This adds the operatorList of the xObj to the current queue.
   13503                 var depIdx = dependencyArray.length;
   13504 
   13505                 // Pass in the current `queue` object. That means the `fnArray`
   13506                 // and the `argsArray` in this scope is reused and new commands
   13507                 // are added to them.
   13508                 this.getOperatorList(xobj,
   13509                     xobj.dict.get('Resources') || resources,
   13510                     dependencyArray, queue);
   13511 
   13512                // Add the dependencies that are required to execute the
   13513                // operatorList.
   13514                insertDependency(dependencyArray.slice(depIdx));
   13515 
   13516                 fn = 'paintFormXObjectEnd';
   13517                 args = [];
   13518               } else if ('Image' == type.name) {
   13519                 buildPaintImageXObject(xobj, false);
   13520               } else {
   13521                 error('Unhandled XObject subtype ' + type.name);
   13522               }
   13523             }
   13524           } else if (cmd == 'Tf') { // eagerly collect all fonts
   13525             args[0] = handleSetFont(args[0].name);
   13526           } else if (cmd == 'EI') {
   13527             buildPaintImageXObject(args[0], true);
   13528           }
   13529 
   13530           switch (fn) {
   13531             // Parse the ColorSpace data to a raw format.
   13532             case 'setFillColorSpace':
   13533             case 'setStrokeColorSpace':
   13534               args = [ColorSpace.parseToIR(args[0], xref, resources)];
   13535               break;
   13536             case 'shadingFill':
   13537               var shadingRes = res.get('Shading');
   13538               if (!shadingRes)
   13539                 error('No shading resource found');
   13540 
   13541               var shading = shadingRes.get(args[0].name);
   13542               if (!shading)
   13543                 error('No shading object found');
   13544 
   13545               var shadingFill = Pattern.parseShading(shading, null, xref, res);
   13546               var patternIR = shadingFill.getIR();
   13547               args = [patternIR];
   13548               fn = 'shadingFill';
   13549               break;
   13550             case 'setGState':
   13551               var dictName = args[0];
   13552               var extGState = resources.get('ExtGState');
   13553 
   13554               if (!isDict(extGState) || !extGState.has(dictName.name))
   13555                 break;
   13556 
   13557               var gsState = extGState.get(dictName.name);
   13558 
   13559               // This array holds the converted/processed state data.
   13560               var gsStateObj = [];
   13561 
   13562               gsState.forEach(
   13563                 function canvasGraphicsSetGStateForEach(key, value) {
   13564                   switch (key) {
   13565                     case 'Type':
   13566                       break;
   13567                     case 'LW':
   13568                     case 'LC':
   13569                     case 'LJ':
   13570                     case 'ML':
   13571                     case 'D':
   13572                     case 'RI':
   13573                     case 'FL':
   13574                     case 'CA':
   13575                     case 'ca':
   13576                       gsStateObj.push([key, value]);
   13577                       break;
   13578                     case 'Font':
   13579                       gsStateObj.push([
   13580                         'Font',
   13581                         handleSetFont(null, value[0]),
   13582                         value[1]
   13583                       ]);
   13584                       break;
   13585                     case 'OP':
   13586                     case 'op':
   13587                     case 'OPM':
   13588                     case 'BG':
   13589                     case 'BG2':
   13590                     case 'UCR':
   13591                     case 'UCR2':
   13592                     case 'TR':
   13593                     case 'TR2':
   13594                     case 'HT':
   13595                     case 'SM':
   13596                     case 'SA':
   13597                     case 'BM':
   13598                     case 'SMask':
   13599                     case 'AIS':
   13600                     case 'TK':
   13601                       TODO('graphic state operator ' + key);
   13602                       break;
   13603                     default:
   13604                       warn('Unknown graphic state operator ' + key);
   13605                       break;
   13606                   }
   13607                 }
   13608               );
   13609               args = [gsStateObj];
   13610               break;
   13611           } // switch
   13612 
   13613           fnArray.push(fn);
   13614           argsArray.push(args);
   13615           args = [];
   13616         } else if (obj != null) {
   13617           assertWellFormed(args.length <= 33, 'Too many arguments');
   13618           args.push(obj instanceof Dict ? obj.getAll() : obj);
   13619         }
   13620       }
   13621 
   13622       return queue;
   13623     },
   13624 
   13625     extractDataStructures: function
   13626       partialEvaluatorExtractDataStructures(dict, baseDict,
   13627                                             xref, properties) {
   13628       // 9.10.2
   13629       var toUnicode = dict.get('ToUnicode') ||
   13630         baseDict.get('ToUnicode');
   13631       if (toUnicode)
   13632         properties.toUnicode = this.readToUnicode(toUnicode, xref, properties);
   13633 
   13634       if (properties.composite) {
   13635         // CIDSystemInfo helps to match CID to glyphs
   13636         var cidSystemInfo = dict.get('CIDSystemInfo');
   13637         if (isDict(cidSystemInfo)) {
   13638           properties.cidSystemInfo = {
   13639             registry: cidSystemInfo.get('Registry'),
   13640             ordering: cidSystemInfo.get('Ordering'),
   13641             supplement: cidSystemInfo.get('Supplement')
   13642           };
   13643         }
   13644 
   13645         var cidToGidMap = dict.get('CIDToGIDMap');
   13646         if (isStream(cidToGidMap))
   13647           properties.cidToGidMap = this.readCidToGidMap(cidToGidMap);
   13648       }
   13649 
   13650       var flags = properties.flags;
   13651       var differences = [];
   13652       var baseEncoding = !!(flags & FontFlags.Symbolic) ?
   13653                          Encodings.symbolsEncoding : Encodings.StandardEncoding;
   13654       var hasEncoding = dict.has('Encoding');
   13655       if (hasEncoding) {
   13656         var encoding = dict.get('Encoding');
   13657         if (isDict(encoding)) {
   13658           var baseName = encoding.get('BaseEncoding');
   13659           if (baseName)
   13660             baseEncoding = Encodings[baseName.name];
   13661           else
   13662             hasEncoding = false; // base encoding was not provided
   13663 
   13664           // Load the differences between the base and original
   13665           if (encoding.has('Differences')) {
   13666             var diffEncoding = encoding.get('Differences');
   13667             var index = 0;
   13668             for (var j = 0, jj = diffEncoding.length; j < jj; j++) {
   13669               var data = diffEncoding[j];
   13670               if (isNum(data))
   13671                 index = data;
   13672               else
   13673                 differences[index++] = data.name;
   13674             }
   13675           }
   13676         } else if (isName(encoding)) {
   13677           baseEncoding = Encodings[encoding.name];
   13678         } else {
   13679           error('Encoding is not a Name nor a Dict');
   13680         }
   13681       }
   13682 
   13683       properties.differences = differences;
   13684       properties.baseEncoding = baseEncoding;
   13685       properties.hasEncoding = hasEncoding;
   13686     },
   13687 
   13688     readToUnicode: function PartialEvaluator_readToUnicode(toUnicode, xref,
   13689                                                            properties) {
   13690       var cmapObj = toUnicode;
   13691       var charToUnicode = [];
   13692       if (isName(cmapObj)) {
   13693         var isIdentityMap = cmapObj.name.substr(0, 9) == 'Identity-';
   13694         if (!isIdentityMap)
   13695           error('ToUnicode file cmap translation not implemented');
   13696       } else if (isStream(cmapObj)) {
   13697         var tokens = [];
   13698         var token = '';
   13699         var beginArrayToken = {};
   13700 
   13701         var cmap = cmapObj.getBytes(cmapObj.length);
   13702         for (var i = 0, ii = cmap.length; i < ii; i++) {
   13703           var octet = cmap[i];
   13704           if (octet == 0x20 || octet == 0x0D || octet == 0x0A ||
   13705               octet == 0x3C || octet == 0x5B || octet == 0x5D) {
   13706             switch (token) {
   13707               case 'usecmap':
   13708                 error('usecmap is not implemented');
   13709                 break;
   13710 
   13711               case 'beginbfchar':
   13712               case 'beginbfrange':
   13713               case 'begincidchar':
   13714               case 'begincidrange':
   13715                 token = '';
   13716                 tokens = [];
   13717                 break;
   13718 
   13719               case 'endcidrange':
   13720               case 'endbfrange':
   13721                 for (var j = 0, jj = tokens.length; j < jj; j += 3) {
   13722                   var startRange = tokens[j];
   13723                   var endRange = tokens[j + 1];
   13724                   var code = tokens[j + 2];
   13725                   if (code == 0xFFFF) {
   13726                     // CMap is broken, assuming code == startRange
   13727                     code = startRange;
   13728                   }
   13729                   if (isArray(code)) {
   13730                     var codeindex = 0;
   13731                     while (startRange <= endRange) {
   13732                       charToUnicode[startRange] = code[codeindex++];
   13733                       ++startRange;
   13734                     }
   13735                   } else {
   13736                     while (startRange <= endRange) {
   13737                       charToUnicode[startRange] = code++;
   13738                       ++startRange;
   13739                     }
   13740                   }
   13741                 }
   13742                 break;
   13743 
   13744               case 'endcidchar':
   13745               case 'endbfchar':
   13746                 for (var j = 0, jj = tokens.length; j < jj; j += 2) {
   13747                   var index = tokens[j];
   13748                   var code = tokens[j + 1];
   13749                   charToUnicode[index] = code;
   13750                 }
   13751                 break;
   13752 
   13753               case '':
   13754                 break;
   13755 
   13756               default:
   13757                 if (token[0] >= '0' && token[0] <= '9')
   13758                   token = parseInt(token, 10); // a number
   13759                 tokens.push(token);
   13760                 token = '';
   13761             }
   13762             switch (octet) {
   13763               case 0x5B:
   13764                 // begin list parsing
   13765                 tokens.push(beginArrayToken);
   13766                 break;
   13767               case 0x5D:
   13768                 // collect array items
   13769                 var items = [], item;
   13770                 while (tokens.length &&
   13771                        (item = tokens.pop()) != beginArrayToken)
   13772                   items.unshift(item);
   13773                 tokens.push(items);
   13774                 break;
   13775             }
   13776           } else if (octet == 0x3E) {
   13777             if (token.length) {
   13778               // XXX guessing chars size by checking number size in the CMap
   13779               if (token.length <= 2 && properties.composite)
   13780                 properties.wideChars = false;
   13781 
   13782               if (token.length <= 4) {
   13783                 // parsing hex number
   13784                 tokens.push(parseInt(token, 16));
   13785                 token = '';
   13786               } else {
   13787                 // parsing hex UTF-16BE numbers
   13788                 var str = [];
   13789                 for (var k = 0, kk = token.length; k < kk; k += 4) {
   13790                   var b = parseInt(token.substr(k, 4), 16);
   13791                   if (b <= 0x10) {
   13792                     k += 4;
   13793                     b = (b << 16) | parseInt(token.substr(k, 4), 16);
   13794                     b -= 0x10000;
   13795                     str.push(0xD800 | (b >> 10));
   13796                     str.push(0xDC00 | (b & 0x3FF));
   13797                     break;
   13798                   }
   13799                   str.push(b);
   13800                 }
   13801                 tokens.push(String.fromCharCode.apply(String, str));
   13802                 token = '';
   13803               }
   13804             }
   13805           } else {
   13806             token += String.fromCharCode(octet);
   13807           }
   13808         }
   13809       }
   13810       return charToUnicode;
   13811     },
   13812     readCidToGidMap: function PartialEvaluator_readCidToGidMap(cidToGidStream) {
   13813       // Extract the encoding from the CIDToGIDMap
   13814       var glyphsData = cidToGidStream.getBytes();
   13815 
   13816       // Set encoding 0 to later verify the font has an encoding
   13817       var result = [];
   13818       for (var j = 0, jj = glyphsData.length; j < jj; j++) {
   13819         var glyphID = (glyphsData[j++] << 8) | glyphsData[j];
   13820         if (glyphID == 0)
   13821           continue;
   13822 
   13823         var code = j >> 1;
   13824         result[code] = glyphID;
   13825       }
   13826       return result;
   13827     },
   13828 
   13829     extractWidths: function PartialEvaluator_extractWidths(dict,
   13830                                                    xref,
   13831                                                    descriptor,
   13832                                                    properties) {
   13833       var glyphsWidths = [];
   13834       var defaultWidth = 0;
   13835       if (properties.composite) {
   13836         defaultWidth = dict.get('DW') || 1000;
   13837 
   13838         var widths = dict.get('W');
   13839         if (widths) {
   13840           var start = 0, end = 0;
   13841           for (var i = 0, ii = widths.length; i < ii; i++) {
   13842             var code = widths[i];
   13843             if (isArray(code)) {
   13844               for (var j = 0, jj = code.length; j < jj; j++)
   13845                 glyphsWidths[start++] = code[j];
   13846               start = 0;
   13847             } else if (start) {
   13848               var width = widths[++i];
   13849               for (var j = start; j <= code; j++)
   13850                 glyphsWidths[j] = width;
   13851               start = 0;
   13852             } else {
   13853               start = code;
   13854             }
   13855           }
   13856         }
   13857       } else {
   13858         var firstChar = properties.firstChar;
   13859         var widths = dict.get('Widths');
   13860         if (widths) {
   13861           var j = firstChar;
   13862           for (var i = 0, ii = widths.length; i < ii; i++)
   13863             glyphsWidths[j++] = widths[i];
   13864           defaultWidth = parseFloat(descriptor.get('MissingWidth')) || 0;
   13865         } else {
   13866           // Trying get the BaseFont metrics (see comment above).
   13867           var baseFontName = dict.get('BaseFont');
   13868           if (isName(baseFontName)) {
   13869             var metrics = this.getBaseFontMetrics(baseFontName.name);
   13870 
   13871             glyphsWidths = metrics.widths;
   13872             defaultWidth = metrics.defaultWidth;
   13873           }
   13874         }
   13875       }
   13876 
   13877       properties.defaultWidth = defaultWidth;
   13878       properties.widths = glyphsWidths;
   13879     },
   13880 
   13881     getBaseFontMetrics: function PartialEvaluator_getBaseFontMetrics(name) {
   13882       var defaultWidth = 0, widths = [];
   13883       var glyphWidths = Metrics[stdFontMap[name] || name];
   13884       if (isNum(glyphWidths)) {
   13885         defaultWidth = glyphWidths;
   13886       } else {
   13887         widths = glyphWidths;
   13888       }
   13889 
   13890       return {
   13891         defaultWidth: defaultWidth,
   13892         widths: widths
   13893       };
   13894     },
   13895 
   13896     translateFont: function PartialEvaluator_translateFont(dict,
   13897                                                            xref,
   13898                                                            resources,
   13899                                                            dependency) {
   13900       var baseDict = dict;
   13901       var type = dict.get('Subtype');
   13902       assertWellFormed(isName(type), 'invalid font Subtype');
   13903 
   13904       var composite = false;
   13905       if (type.name == 'Type0') {
   13906         // If font is a composite
   13907         //  - get the descendant font
   13908         //  - set the type according to the descendant font
   13909         //  - get the FontDescriptor from the descendant font
   13910         var df = dict.get('DescendantFonts');
   13911         if (!df)
   13912           return null;
   13913 
   13914         dict = isArray(df) ? xref.fetchIfRef(df[0]) : df;
   13915 
   13916         type = dict.get('Subtype');
   13917         assertWellFormed(isName(type), 'invalid font Subtype');
   13918         composite = true;
   13919       }
   13920       var maxCharIndex = composite ? 0xFFFF : 0xFF;
   13921 
   13922       var descriptor = dict.get('FontDescriptor');
   13923       if (!descriptor) {
   13924         if (type.name == 'Type3') {
   13925           // FontDescriptor is only required for Type3 fonts when the document
   13926           // is a tagged pdf. Create a barbebones one to get by.
   13927           descriptor = new Dict();
   13928           descriptor.set('FontName', new Name(type.name));
   13929         } else {
   13930           // Before PDF 1.5 if the font was one of the base 14 fonts, having a
   13931           // FontDescriptor was not required.
   13932           // This case is here for compatibility.
   13933           var baseFontName = dict.get('BaseFont');
   13934           if (!isName(baseFontName))
   13935             return null;
   13936 
   13937           // Using base font name as a font name.
   13938           baseFontName = baseFontName.name.replace(/[,_]/g, '-');
   13939           var metrics = this.getBaseFontMetrics(baseFontName);
   13940 
   13941           // Simulating descriptor flags attribute
   13942           var fontNameWoStyle = baseFontName.split('-')[0];
   13943           var flags = (serifFonts[fontNameWoStyle] ||
   13944             (fontNameWoStyle.search(/serif/gi) != -1) ? FontFlags.Serif : 0) |
   13945             (symbolsFonts[fontNameWoStyle] ? FontFlags.Symbolic :
   13946             FontFlags.Nonsymbolic);
   13947 
   13948           var properties = {
   13949             type: type.name,
   13950             widths: metrics.widths,
   13951             defaultWidth: metrics.defaultWidth,
   13952             flags: flags,
   13953             firstChar: 0,
   13954             lastChar: maxCharIndex
   13955           };
   13956           this.extractDataStructures(dict, dict, xref, properties);
   13957 
   13958           return {
   13959             name: baseFontName,
   13960             dict: baseDict,
   13961             properties: properties
   13962           };
   13963         }
   13964       }
   13965 
   13966       // According to the spec if 'FontDescriptor' is declared, 'FirstChar',
   13967       // 'LastChar' and 'Widths' should exist too, but some PDF encoders seem
   13968       // to ignore this rule when a variant of a standart font is used.
   13969       // TODO Fill the width array depending on which of the base font this is
   13970       // a variant.
   13971       var firstChar = dict.get('FirstChar') || 0;
   13972       var lastChar = dict.get('LastChar') || maxCharIndex;
   13973       var fontName = descriptor.get('FontName');
   13974       // Some bad pdf's have a string as the font name.
   13975       if (isString(fontName))
   13976         fontName = new Name(fontName);
   13977       assertWellFormed(isName(fontName), 'invalid font name');
   13978 
   13979       var fontFile = descriptor.get('FontFile', 'FontFile2', 'FontFile3');
   13980       if (fontFile) {
   13981         if (fontFile.dict) {
   13982           var subtype = fontFile.dict.get('Subtype');
   13983           if (subtype)
   13984             subtype = subtype.name;
   13985 
   13986           var length1 = fontFile.dict.get('Length1');
   13987 
   13988           var length2 = fontFile.dict.get('Length2');
   13989         }
   13990       }
   13991 
   13992       var properties = {
   13993         type: type.name,
   13994         subtype: subtype,
   13995         file: fontFile,
   13996         length1: length1,
   13997         length2: length2,
   13998         composite: composite,
   13999         wideChars: composite,
   14000         fixedPitch: false,
   14001         fontMatrix: dict.get('FontMatrix') || IDENTITY_MATRIX,
   14002         firstChar: firstChar || 0,
   14003         lastChar: lastChar || maxCharIndex,
   14004         bbox: descriptor.get('FontBBox'),
   14005         ascent: descriptor.get('Ascent'),
   14006         descent: descriptor.get('Descent'),
   14007         xHeight: descriptor.get('XHeight'),
   14008         capHeight: descriptor.get('CapHeight'),
   14009         flags: descriptor.get('Flags'),
   14010         italicAngle: descriptor.get('ItalicAngle'),
   14011         coded: false
   14012       };
   14013       this.extractWidths(dict, xref, descriptor, properties);
   14014       this.extractDataStructures(dict, baseDict, xref, properties);
   14015 
   14016       if (type.name === 'Type3') {
   14017         properties.coded = true;
   14018         var charProcs = dict.get('CharProcs').getAll();
   14019         var fontResources = dict.get('Resources') || resources;
   14020         properties.charProcOperatorList = {};
   14021         for (var key in charProcs) {
   14022           var glyphStream = charProcs[key];
   14023           properties.charProcOperatorList[key] =
   14024             this.getOperatorList(glyphStream, fontResources, dependency);
   14025         }
   14026       }
   14027 
   14028       return {
   14029         name: fontName.name,
   14030         dict: baseDict,
   14031         file: fontFile,
   14032         properties: properties
   14033       };
   14034     }
   14035   };
   14036 
   14037   return PartialEvaluator;
   14038 })();
   14039 
   14040 var EvalState = (function EvalStateClosure() {
   14041   function EvalState() {
   14042     // Are soft masks and alpha values shapes or opacities?
   14043     this.alphaIsShape = false;
   14044     this.fontSize = 0;
   14045     this.textMatrix = IDENTITY_MATRIX;
   14046     this.leading = 0;
   14047     // Start of text line (in text coordinates)
   14048     this.lineX = 0;
   14049     this.lineY = 0;
   14050     // Character and word spacing
   14051     this.charSpacing = 0;
   14052     this.wordSpacing = 0;
   14053     this.textHScale = 1;
   14054     // Color spaces
   14055     this.fillColorSpace = null;
   14056     this.strokeColorSpace = null;
   14057   }
   14058   EvalState.prototype = {
   14059   };
   14060   return EvalState;
   14061 })();
   14062 
   14063 
   14064 /* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
   14065 /* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */
   14066 
   14067 'use strict';
   14068 
   14069 /**
   14070  * Maximum time to wait for a font to be loaded by font-face rules.
   14071  */
   14072 var kMaxWaitForFontFace = 1000;
   14073 
   14074 // Unicode Private Use Area
   14075 var kCmapGlyphOffset = 0xE000;
   14076 var kSizeOfGlyphArea = 0x1900;
   14077 var kSymbolicFontGlyphOffset = 0xF000;
   14078 
   14079 // PDF Glyph Space Units are one Thousandth of a TextSpace Unit
   14080 // except for Type 3 fonts
   14081 var kPDFGlyphSpaceUnits = 1000;
   14082 
   14083 // Until hinting is fully supported this constant can be used
   14084 var kHintingEnabled = false;
   14085 
   14086 var FontFlags = {
   14087   FixedPitch: 1,
   14088   Serif: 2,
   14089   Symbolic: 4,
   14090   Script: 8,
   14091   Nonsymbolic: 32,
   14092   Italic: 64,
   14093   AllCap: 65536,
   14094   SmallCap: 131072,
   14095   ForceBold: 262144
   14096 };
   14097 
   14098 var Encodings = {
   14099   ExpertEncoding: ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
   14100     '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
   14101     'space', 'exclamsmall', 'Hungarumlautsmall', '', 'dollaroldstyle',
   14102     'dollarsuperior', 'ampersandsmall', 'Acutesmall', 'parenleftsuperior',
   14103     'parenrightsuperior', 'twodotenleader', 'onedotenleader', 'comma',
   14104     'hyphen', 'period', 'fraction', 'zerooldstyle', 'oneoldstyle',
   14105     'twooldstyle', 'threeoldstyle', 'fouroldstyle', 'fiveoldstyle',
   14106     'sixoldstyle', 'sevenoldstyle', 'eightoldstyle', 'nineoldstyle', 'colon',
   14107     'semicolon', 'commasuperior', 'threequartersemdash', 'periodsuperior',
   14108     'questionsmall', '', 'asuperior', 'bsuperior', 'centsuperior', 'dsuperior',
   14109     'esuperior', '', '', 'isuperior', '', '', 'lsuperior', 'msuperior',
   14110     'nsuperior', 'osuperior', '', '', 'rsuperior', 'ssuperior', 'tsuperior',
   14111     '', 'ff', 'fi', 'fl', 'ffi', 'ffl', 'parenleftinferior', '',
   14112     'parenrightinferior', 'Circumflexsmall', 'hyphensuperior', 'Gravesmall',
   14113     'Asmall', 'Bsmall', 'Csmall', 'Dsmall', 'Esmall', 'Fsmall', 'Gsmall',
   14114     'Hsmall', 'Ismall', 'Jsmall', 'Ksmall', 'Lsmall', 'Msmall', 'Nsmall',
   14115     'Osmall', 'Psmall', 'Qsmall', 'Rsmall', 'Ssmall', 'Tsmall', 'Usmall',
   14116     'Vsmall', 'Wsmall', 'Xsmall', 'Ysmall', 'Zsmall', 'colonmonetary',
   14117     'onefitted', 'rupiah', 'Tildesmall', '', '', '', '', '', '', '', '', '',
   14118     '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
   14119     '', '', '', '', '', '', 'exclamdownsmall', 'centoldstyle', 'Lslashsmall',
   14120     '', '', 'Scaronsmall', 'Zcaronsmall', 'Dieresissmall', 'Brevesmall',
   14121     'Caronsmall', '', 'Dotaccentsmall', '', '', 'Macronsmall', '', '',
   14122     'figuredash', 'hypheninferior', '', '', 'Ogoneksmall', 'Ringsmall',
   14123     'Cedillasmall', '', '', '', 'onequarter', 'onehalf', 'threequarters',
   14124     'questiondownsmall', 'oneeighth', 'threeeighths', 'fiveeighths',
   14125     'seveneighths', 'onethird', 'twothirds', '', '', 'zerosuperior',
   14126     'onesuperior', 'twosuperior', 'threesuperior', 'foursuperior',
   14127     'fivesuperior', 'sixsuperior', 'sevensuperior', 'eightsuperior',
   14128     'ninesuperior', 'zeroinferior', 'oneinferior', 'twoinferior',
   14129     'threeinferior', 'fourinferior', 'fiveinferior', 'sixinferior',
   14130     'seveninferior', 'eightinferior', 'nineinferior', 'centinferior',
   14131     'dollarinferior', 'periodinferior', 'commainferior', 'Agravesmall',
   14132     'Aacutesmall', 'Acircumflexsmall', 'Atildesmall', 'Adieresissmall',
   14133     'Aringsmall', 'AEsmall', 'Ccedillasmall', 'Egravesmall', 'Eacutesmall',
   14134     'Ecircumflexsmall', 'Edieresissmall', 'Igravesmall', 'Iacutesmall',
   14135     'Icircumflexsmall', 'Idieresissmall', 'Ethsmall', 'Ntildesmall',
   14136     'Ogravesmall', 'Oacutesmall', 'Ocircumflexsmall', 'Otildesmall',
   14137     'Odieresissmall', 'OEsmall', 'Oslashsmall', 'Ugravesmall', 'Uacutesmall',
   14138     'Ucircumflexsmall', 'Udieresissmall', 'Yacutesmall', 'Thornsmall',
   14139     'Ydieresissmall'],
   14140   MacExpertEncoding: ['', '', '', '', '', '', '', '', '', '', '', '', '', '',
   14141     '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
   14142     'space', 'exclamsmall', 'Hungarumlautsmall', 'centoldstyle',
   14143     'dollaroldstyle', 'dollarsuperior', 'ampersandsmall', 'Acutesmall',
   14144     'parenleftsuperior', 'parenrightsuperior', 'twodotenleader',
   14145     'onedotenleader', 'comma', 'hyphen', 'period', 'fraction', 'zerooldstyle',
   14146     'oneoldstyle', 'twooldstyle', 'threeoldstyle', 'fouroldstyle',
   14147     'fiveoldstyle', 'sixoldstyle', 'sevenoldstyle', 'eightoldstyle',
   14148     'nineoldstyle', 'colon', 'semicolon', '', 'threequartersemdash', '',
   14149     'questionsmall', '', '', '', '', 'Ethsmall', '', '', 'onequarter',
   14150     'onehalf', 'threequarters', 'oneeighth', 'threeeighths', 'fiveeighths',
   14151     'seveneighths', 'onethird', 'twothirds', '', '', '', '', '', '', 'ff',
   14152     'fi', 'fl', 'ffi', 'ffl', 'parenleftinferior', '', 'parenrightinferior',
   14153     'Circumflexsmall', 'hypheninferior', 'Gravesmall', 'Asmall', 'Bsmall',
   14154     'Csmall', 'Dsmall', 'Esmall', 'Fsmall', 'Gsmall', 'Hsmall', 'Ismall',
   14155     'Jsmall', 'Ksmall', 'Lsmall', 'Msmall', 'Nsmall', 'Osmall', 'Psmall',
   14156     'Qsmall', 'Rsmall', 'Ssmall', 'Tsmall', 'Usmall', 'Vsmall', 'Wsmall',
   14157     'Xsmall', 'Ysmall', 'Zsmall', 'colonmonetary', 'onefitted', 'rupiah',
   14158     'Tildesmall', '', '', 'asuperior', 'centsuperior', '', '', '', '',
   14159     'Aacutesmall', 'Agravesmall', 'Acircumflexsmall', 'Adieresissmall',
   14160     'Atildesmall', 'Aringsmall', 'Ccedillasmall', 'Eacutesmall', 'Egravesmall',
   14161     'Ecircumflexsmall', 'Edieresissmall', 'Iacutesmall', 'Igravesmall',
   14162     'Icircumflexsmall', 'Idieresissmall', 'Ntildesmall', 'Oacutesmall',
   14163     'Ogravesmall', 'Ocircumflexsmall', 'Odieresissmall', 'Otildesmall',
   14164     'Uacutesmall', 'Ugravesmall', 'Ucircumflexsmall', 'Udieresissmall', '',
   14165     'eightsuperior', 'fourinferior', 'threeinferior', 'sixinferior',
   14166     'eightinferior', 'seveninferior', 'Scaronsmall', '', 'centinferior',
   14167     'twoinferior', '', 'Dieresissmall', '', 'Caronsmall', 'osuperior',
   14168     'fiveinferior', '', 'commainferior', 'periodinferior', 'Yacutesmall', '',
   14169     'dollarinferior', '', 'Thornsmall', '', 'nineinferior', 'zeroinferior',
   14170     'Zcaronsmall', 'AEsmall', 'Oslashsmall', 'questiondownsmall',
   14171     'oneinferior', 'Lslashsmall', '', '', '', '', '', '', 'Cedillasmall', '',
   14172     '', '', '', '', 'OEsmall', 'figuredash', 'hyphensuperior', '', '', '', '',
   14173     'exclamdownsmall', '', 'Ydieresissmall', '', 'onesuperior', 'twosuperior',
   14174     'threesuperior', 'foursuperior', 'fivesuperior', 'sixsuperior',
   14175     'sevensuperior', 'ninesuperior', 'zerosuperior', '', 'esuperior',
   14176     'rsuperior', 'tsuperior', '', '', 'isuperior', 'ssuperior', 'dsuperior',
   14177     '', '', '', '', '', 'lsuperior', 'Ogoneksmall', 'Brevesmall',
   14178     'Macronsmall', 'bsuperior', 'nsuperior', 'msuperior', 'commasuperior',
   14179     'periodsuperior', 'Dotaccentsmall', 'Ringsmall'],
   14180   MacRomanEncoding: ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
   14181     '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
   14182     'space', 'exclam', 'quotedbl', 'numbersign', 'dollar', 'percent',
   14183     'ampersand', 'quotesingle', 'parenleft', 'parenright', 'asterisk', 'plus',
   14184     'comma', 'hyphen', 'period', 'slash', 'zero', 'one', 'two', 'three',
   14185     'four', 'five', 'six', 'seven', 'eight', 'nine', 'colon', 'semicolon',
   14186     'less', 'equal', 'greater', 'question', 'at', 'A', 'B', 'C', 'D', 'E', 'F',
   14187     'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U',
   14188     'V', 'W', 'X', 'Y', 'Z', 'bracketleft', 'backslash', 'bracketright',
   14189     'asciicircum', 'underscore', 'grave', 'a', 'b', 'c', 'd', 'e', 'f', 'g',
   14190     'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v',
   14191     'w', 'x', 'y', 'z', 'braceleft', 'bar', 'braceright', 'asciitilde', '',
   14192     'Adieresis', 'Aring', 'Ccedilla', 'Eacute', 'Ntilde', 'Odieresis',
   14193     'Udieresis', 'aacute', 'agrave', 'acircumflex', 'adieresis', 'atilde',
   14194     'aring', 'ccedilla', 'eacute', 'egrave', 'ecircumflex', 'edieresis',
   14195     'iacute', 'igrave', 'icircumflex', 'idieresis', 'ntilde', 'oacute',
   14196     'ograve', 'ocircumflex', 'odieresis', 'otilde', 'uacute', 'ugrave',
   14197     'ucircumflex', 'udieresis', 'dagger', 'degree', 'cent', 'sterling',
   14198     'section', 'bullet', 'paragraph', 'germandbls', 'registered', 'copyright',
   14199     'trademark', 'acute', 'dieresis', 'notequal', 'AE', 'Oslash', 'infinity',
   14200     'plusminus', 'lessequal', 'greaterequal', 'yen', 'mu', 'partialdiff',
   14201     'summation', 'product', 'pi', 'integral', 'ordfeminine', 'ordmasculine',
   14202     'Omega', 'ae', 'oslash', 'questiondown', 'exclamdown', 'logicalnot',
   14203     'radical', 'florin', 'approxequal', 'Delta', 'guillemotleft',
   14204     'guillemotright', 'ellipsis', '', 'Agrave', 'Atilde', 'Otilde', 'OE',
   14205     'oe', 'endash', 'emdash', 'quotedblleft', 'quotedblright', 'quoteleft',
   14206     'quoteright', 'divide', 'lozenge', 'ydieresis', 'Ydieresis', 'fraction',
   14207     'currency', 'guilsinglleft', 'guilsinglright', 'fi', 'fl', 'daggerdbl',
   14208     'periodcentered', 'quotesinglbase', 'quotedblbase', 'perthousand',
   14209     'Acircumflex', 'Ecircumflex', 'Aacute', 'Edieresis', 'Egrave', 'Iacute',
   14210     'Icircumflex', 'Idieresis', 'Igrave', 'Oacute', 'Ocircumflex', 'apple',
   14211     'Ograve', 'Uacute', 'Ucircumflex', 'Ugrave', 'dotlessi', 'circumflex',
   14212     'tilde', 'macron', 'breve', 'dotaccent', 'ring', 'cedilla', 'hungarumlaut',
   14213     'ogonek', 'caron'],
   14214   StandardEncoding: ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
   14215     '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
   14216     'space', 'exclam', 'quotedbl', 'numbersign', 'dollar', 'percent',
   14217     'ampersand', 'quoteright', 'parenleft', 'parenright', 'asterisk', 'plus',
   14218     'comma', 'hyphen', 'period', 'slash', 'zero', 'one', 'two', 'three',
   14219     'four', 'five', 'six', 'seven', 'eight', 'nine', 'colon', 'semicolon',
   14220     'less', 'equal', 'greater', 'question', 'at', 'A', 'B', 'C', 'D', 'E', 'F',
   14221     'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U',
   14222     'V', 'W', 'X', 'Y', 'Z', 'bracketleft', 'backslash', 'bracketright',
   14223     'asciicircum', 'underscore', 'quoteleft', 'a', 'b', 'c', 'd', 'e', 'f',
   14224     'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u',
   14225     'v', 'w', 'x', 'y', 'z', 'braceleft', 'bar', 'braceright', 'asciitilde',
   14226     '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
   14227     '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'exclamdown',
   14228     'cent', 'sterling', 'fraction', 'yen', 'florin', 'section', 'currency',
   14229     'quotesingle', 'quotedblleft', 'guillemotleft', 'guilsinglleft',
   14230     'guilsinglright', 'fi', 'fl', '', 'endash', 'dagger', 'daggerdbl',
   14231     'periodcentered', '', 'paragraph', 'bullet', 'quotesinglbase',
   14232     'quotedblbase', 'quotedblright', 'guillemotright', 'ellipsis',
   14233     'perthousand', '', 'questiondown', '', 'grave', 'acute', 'circumflex',
   14234     'tilde', 'macron', 'breve', 'dotaccent', 'dieresis', '', 'ring', 'cedilla',
   14235     '', 'hungarumlaut', 'ogonek', 'caron', 'emdash', '', '', '', '', '', '',
   14236     '', '', '', '', '', '', '', '', '', '', 'AE', '', 'ordfeminine', '', '',
   14237     '', '', 'Lslash', 'Oslash', 'OE', 'ordmasculine', '', '', '', '', '', 'ae',
   14238     '', '', '', 'dotlessi', '', '', 'lslash', 'oslash', 'oe', 'germandbls'],
   14239   WinAnsiEncoding: ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
   14240     '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
   14241     'space', 'exclam', 'quotedbl', 'numbersign', 'dollar', 'percent',
   14242     'ampersand', 'quotesingle', 'parenleft', 'parenright', 'asterisk', 'plus',
   14243     'comma', 'hyphen', 'period', 'slash', 'zero', 'one', 'two', 'three',
   14244     'four', 'five', 'six', 'seven', 'eight', 'nine', 'colon', 'semicolon',
   14245     'less', 'equal', 'greater', 'question', 'at', 'A', 'B', 'C', 'D', 'E', 'F',
   14246     'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U',
   14247     'V', 'W', 'X', 'Y', 'Z', 'bracketleft', 'backslash', 'bracketright',
   14248     'asciicircum', 'underscore', 'grave', 'a', 'b', 'c', 'd', 'e', 'f', 'g',
   14249     'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v',
   14250     'w', 'x', 'y', 'z', 'braceleft', 'bar', 'braceright', 'asciitilde',
   14251     'bullet', 'Euro', 'bullet', 'quotesinglbase', 'florin', 'quotedblbase',
   14252     'ellipsis', 'dagger', 'daggerdbl', 'circumflex', 'perthousand', 'Scaron',
   14253     'guilsinglleft', 'OE', 'bullet', 'Zcaron', 'bullet', 'bullet', 'quoteleft',
   14254     'quoteright', 'quotedblleft', 'quotedblright', 'bullet', 'endash',
   14255     'emdash', 'tilde', 'trademark', 'scaron', 'guilsinglright', 'oe', 'bullet',
   14256     'zcaron', 'Ydieresis', '', 'exclamdown', 'cent', 'sterling',
   14257     'currency', 'yen', 'brokenbar', 'section', 'dieresis', 'copyright',
   14258     'ordfeminine', 'guillemotleft', 'logicalnot', 'hyphen', 'registered',
   14259     'macron', 'degree', 'plusminus', 'twosuperior', 'threesuperior', 'acute',
   14260     'mu', 'paragraph', 'periodcentered', 'cedilla', 'onesuperior',
   14261     'ordmasculine', 'guillemotright', 'onequarter', 'onehalf', 'threequarters',
   14262     'questiondown', 'Agrave', 'Aacute', 'Acircumflex', 'Atilde', 'Adieresis',
   14263     'Aring', 'AE', 'Ccedilla', 'Egrave', 'Eacute', 'Ecircumflex', 'Edieresis',
   14264     'Igrave', 'Iacute', 'Icircumflex', 'Idieresis', 'Eth', 'Ntilde', 'Ograve',
   14265     'Oacute', 'Ocircumflex', 'Otilde', 'Odieresis', 'multiply', 'Oslash',
   14266     'Ugrave', 'Uacute', 'Ucircumflex', 'Udieresis', 'Yacute', 'Thorn',
   14267     'germandbls', 'agrave', 'aacute', 'acircumflex', 'atilde', 'adieresis',
   14268     'aring', 'ae', 'ccedilla', 'egrave', 'eacute', 'ecircumflex', 'edieresis',
   14269     'igrave', 'iacute', 'icircumflex', 'idieresis', 'eth', 'ntilde', 'ograve',
   14270     'oacute', 'ocircumflex', 'otilde', 'odieresis', 'divide', 'oslash',
   14271     'ugrave', 'uacute', 'ucircumflex', 'udieresis', 'yacute', 'thorn',
   14272     'ydieresis'],
   14273   symbolsEncoding: ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
   14274     '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
   14275     'space', 'exclam', 'universal', 'numbersign', 'existential', 'percent',
   14276     'ampersand', 'suchthat', 'parenleft', 'parenright', 'asteriskmath', 'plus',
   14277     'comma', 'minus', 'period', 'slash', 'zero', 'one', 'two', 'three', 'four',
   14278     'five', 'six', 'seven', 'eight', 'nine', 'colon', 'semicolon', 'less',
   14279     'equal', 'greater', 'question', 'congruent', 'Alpha', 'Beta', 'Chi',
   14280     'Delta', 'Epsilon', 'Phi', 'Gamma', 'Eta', 'Iota', 'theta1', 'Kappa',
   14281     'Lambda', 'Mu', 'Nu', 'Omicron', 'Pi', 'Theta', 'Rho', 'Sigma', 'Tau',
   14282     'Upsilon', 'sigma1', 'Omega', 'Xi', 'Psi', 'Zeta', 'bracketleft',
   14283     'therefore', 'bracketright', 'perpendicular', 'underscore', 'radicalex',
   14284     'alpha', 'beta', 'chi', 'delta', 'epsilon', 'phi', 'gamma', 'eta', 'iota',
   14285     'phi1', 'kappa', 'lambda', 'mu', 'nu', 'omicron', 'pi', 'theta', 'rho',
   14286     'sigma', 'tau', 'upsilon', 'omega1', 'omega', 'xi', 'psi', 'zeta',
   14287     'braceleft', 'bar', 'braceright', 'similar', '', '', '', '', '', '', '',
   14288     '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
   14289     '', '', '', '', '', '', '', 'Euro', 'Upsilon1', 'minute', 'lessequal',
   14290     'fraction', 'infinity', 'florin', 'club', 'diamond', 'heart', 'spade',
   14291     'arrowboth', 'arrowleft', 'arrowup', 'arrowright', 'arrowdown', 'degree',
   14292     'plusminus', 'second', 'greaterequal', 'multiply', 'proportional',
   14293     'partialdiff', 'bullet', 'divide', 'notequal', 'equivalence',
   14294     'approxequal', 'ellipsis', 'arrowvertex', 'arrowhorizex', 'carriagereturn',
   14295     'aleph', 'Ifraktur', 'Rfraktur', 'weierstrass', 'circlemultiply',
   14296     'circleplus', 'emptyset', 'intersection', 'union', 'propersuperset',
   14297     'reflexsuperset', 'notsubset', 'propersubset', 'reflexsubset', 'element',
   14298     'notelement', 'angle', 'gradient', 'registerserif', 'copyrightserif',
   14299     'trademarkserif', 'product', 'radical', 'dotmath', 'logicalnot',
   14300     'logicaland', 'logicalor', 'arrowdblboth', 'arrowdblleft', 'arrowdblup',
   14301     'arrowdblright', 'arrowdbldown', 'lozenge', 'angleleft', 'registersans',
   14302     'copyrightsans', 'trademarksans', 'summation', 'parenlefttp',
   14303     'parenleftex', 'parenleftbt', 'bracketlefttp', 'bracketleftex',
   14304     'bracketleftbt', 'bracelefttp', 'braceleftmid', 'braceleftbt', 'braceex',
   14305     '', 'angleright', 'integral', 'integraltp', 'integralex', 'integralbt',
   14306     'parenrighttp', 'parenrightex', 'parenrightbt', 'bracketrighttp',
   14307     'bracketrightex', 'bracketrightbt', 'bracerighttp', 'bracerightmid',
   14308     'bracerightbt'],
   14309   zapfDingbatsEncoding: ['', '', '', '', '', '', '', '', '', '', '', '', '', '',
   14310     '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
   14311     'space', 'a1', 'a2', 'a202', 'a3', 'a4', 'a5', 'a119', 'a118', 'a117',
   14312     'a11', 'a12', 'a13', 'a14', 'a15', 'a16', 'a105', 'a17', 'a18', 'a19',
   14313     'a20', 'a21', 'a22', 'a23', 'a24', 'a25', 'a26', 'a27', 'a28', 'a6', 'a7',
   14314     'a8', 'a9', 'a10', 'a29', 'a30', 'a31', 'a32', 'a33', 'a34', 'a35', 'a36',
   14315     'a37', 'a38', 'a39', 'a40', 'a41', 'a42', 'a43', 'a44', 'a45', 'a46',
   14316     'a47', 'a48', 'a49', 'a50', 'a51', 'a52', 'a53', 'a54', 'a55', 'a56',
   14317     'a57', 'a58', 'a59', 'a60', 'a61', 'a62', 'a63', 'a64', 'a65', 'a66',
   14318     'a67', 'a68', 'a69', 'a70', 'a71', 'a72', 'a73', 'a74', 'a203', 'a75',
   14319     'a204', 'a76', 'a77', 'a78', 'a79', 'a81', 'a82', 'a83', 'a84', 'a97',
   14320     'a98', 'a99', 'a100', '', '', '', '', '', '', '', '', '', '', '', '', '',
   14321     '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
   14322     '', '', 'a101', 'a102', 'a103', 'a104', 'a106', 'a107', 'a108', 'a112',
   14323     'a111', 'a110', 'a109', 'a120', 'a121', 'a122', 'a123', 'a124', 'a125',
   14324     'a126', 'a127', 'a128', 'a129', 'a130', 'a131', 'a132', 'a133', 'a134',
   14325     'a135', 'a136', 'a137', 'a138', 'a139', 'a140', 'a141', 'a142', 'a143',
   14326     'a144', 'a145', 'a146', 'a147', 'a148', 'a149', 'a150', 'a151', 'a152',
   14327     'a153', 'a154', 'a155', 'a156', 'a157', 'a158', 'a159', 'a160', 'a161',
   14328     'a163', 'a164', 'a196', 'a165', 'a192', 'a166', 'a167', 'a168', 'a169',
   14329     'a170', 'a171', 'a172', 'a173', 'a162', 'a174', 'a175', 'a176', 'a177',
   14330     'a178', 'a179', 'a193', 'a180', 'a199', 'a181', 'a200', 'a182', '', 'a201',
   14331     'a183', 'a184', 'a197', 'a185', 'a194', 'a198', 'a186', 'a195', 'a187',
   14332     'a188', 'a189', 'a190', 'a191']
   14333 };
   14334 
   14335 /**
   14336  * Hold a map of decoded fonts and of the standard fourteen Type1
   14337  * fonts and their acronyms.
   14338  */
   14339 var stdFontMap = {
   14340   'ArialNarrow': 'Helvetica',
   14341   'ArialNarrow-Bold': 'Helvetica-Bold',
   14342   'ArialNarrow-BoldItalic': 'Helvetica-BoldOblique',
   14343   'ArialNarrow-Italic': 'Helvetica-Oblique',
   14344   'ArialBlack': 'Helvetica',
   14345   'ArialBlack-Bold': 'Helvetica-Bold',
   14346   'ArialBlack-BoldItalic': 'Helvetica-BoldOblique',
   14347   'ArialBlack-Italic': 'Helvetica-Oblique',
   14348   'Arial': 'Helvetica',
   14349   'Arial-Bold': 'Helvetica-Bold',
   14350   'Arial-BoldItalic': 'Helvetica-BoldOblique',
   14351   'Arial-Italic': 'Helvetica-Oblique',
   14352   'Arial-BoldItalicMT': 'Helvetica-BoldOblique',
   14353   'Arial-BoldMT': 'Helvetica-Bold',
   14354   'Arial-ItalicMT': 'Helvetica-Oblique',
   14355   'ArialMT': 'Helvetica',
   14356   'Courier-Bold': 'Courier-Bold',
   14357   'Courier-BoldItalic': 'Courier-BoldOblique',
   14358   'Courier-Italic': 'Courier-Oblique',
   14359   'CourierNew': 'Courier',
   14360   'CourierNew-Bold': 'Courier-Bold',
   14361   'CourierNew-BoldItalic': 'Courier-BoldOblique',
   14362   'CourierNew-Italic': 'Courier-Oblique',
   14363   'CourierNewPS-BoldItalicMT': 'Courier-BoldOblique',
   14364   'CourierNewPS-BoldMT': 'Courier-Bold',
   14365   'CourierNewPS-ItalicMT': 'Courier-Oblique',
   14366   'CourierNewPSMT': 'Courier',
   14367   'Helvetica-Bold': 'Helvetica-Bold',
   14368   'Helvetica-BoldItalic': 'Helvetica-BoldOblique',
   14369   'Helvetica-Italic': 'Helvetica-Oblique',
   14370   'Symbol-Bold': 'Symbol',
   14371   'Symbol-BoldItalic': 'Symbol',
   14372   'Symbol-Italic': 'Symbol',
   14373   'TimesNewRoman': 'Times-Roman',
   14374   'TimesNewRoman-Bold': 'Times-Bold',
   14375   'TimesNewRoman-BoldItalic': 'Times-BoldItalic',
   14376   'TimesNewRoman-Italic': 'Times-Italic',
   14377   'TimesNewRomanPS': 'Times-Roman',
   14378   'TimesNewRomanPS-Bold': 'Times-Bold',
   14379   'TimesNewRomanPS-BoldItalic': 'Times-BoldItalic',
   14380   'TimesNewRomanPS-BoldItalicMT': 'Times-BoldItalic',
   14381   'TimesNewRomanPS-BoldMT': 'Times-Bold',
   14382   'TimesNewRomanPS-Italic': 'Times-Italic',
   14383   'TimesNewRomanPS-ItalicMT': 'Times-Italic',
   14384   'TimesNewRomanPSMT': 'Times-Roman',
   14385   'TimesNewRomanPSMT-Bold': 'Times-Bold',
   14386   'TimesNewRomanPSMT-BoldItalic': 'Times-BoldItalic',
   14387   'TimesNewRomanPSMT-Italic': 'Times-Italic'
   14388 };
   14389 
   14390 /**
   14391  * Holds the map of the non-standard fonts that might be included as a standard
   14392  * fonts without glyph data.
   14393  */
   14394 var nonStdFontMap = {
   14395   'ComicSansMS': 'Comic Sans MS',
   14396   'ComicSansMS-Bold': 'Comic Sans MS-Bold',
   14397   'ComicSansMS-BoldItalic': 'Comic Sans MS-BoldItalic',
   14398   'ComicSansMS-Italic': 'Comic Sans MS-Italic',
   14399   'LucidaConsole': 'Courier',
   14400   'LucidaConsole-Bold': 'Courier-Bold',
   14401   'LucidaConsole-BoldItalic': 'Courier-BoldOblique',
   14402   'LucidaConsole-Italic': 'Courier-Oblique'
   14403 };
   14404 
   14405 var serifFonts = {
   14406   'Adobe Jenson': true, 'Adobe Text': true, 'Albertus': true,
   14407   'Aldus': true, 'Alexandria': true, 'Algerian': true,
   14408   'American Typewriter': true, 'Antiqua': true, 'Apex': true,
   14409   'Arno': true, 'Aster': true, 'Aurora': true,
   14410   'Baskerville': true, 'Bell': true, 'Bembo': true,
   14411   'Bembo Schoolbook': true, 'Benguiat': true, 'Berkeley Old Style': true,
   14412   'Bernhard Modern': true, 'Berthold City': true, 'Bodoni': true,
   14413   'Bauer Bodoni': true, 'Book Antiqua': true, 'Bookman': true,
   14414   'Bordeaux Roman': true, 'Californian FB': true, 'Calisto': true,
   14415   'Calvert': true, 'Capitals': true, 'Cambria': true,
   14416   'Cartier': true, 'Caslon': true, 'Catull': true,
   14417   'Centaur': true, 'Century Old Style': true, 'Century Schoolbook': true,
   14418   'Chaparral': true, 'Charis SIL': true, 'Cheltenham': true,
   14419   'Cholla Slab': true, 'Clarendon': true, 'Clearface': true,
   14420   'Cochin': true, 'Colonna': true, 'Computer Modern': true,
   14421   'Concrete Roman': true, 'Constantia': true, 'Cooper Black': true,
   14422   'Corona': true, 'Ecotype': true, 'Egyptienne': true,
   14423   'Elephant': true, 'Excelsior': true, 'Fairfield': true,
   14424   'FF Scala': true, 'Folkard': true, 'Footlight': true,
   14425   'FreeSerif': true, 'Friz Quadrata': true, 'Garamond': true,
   14426   'Gentium': true, 'Georgia': true, 'Gloucester': true,
   14427   'Goudy Old Style': true, 'Goudy Schoolbook': true, 'Goudy Pro Font': true,
   14428   'Granjon': true, 'Guardian Egyptian': true, 'Heather': true,
   14429   'Hercules': true, 'High Tower Text': true, 'Hiroshige': true,
   14430   'Hoefler Text': true, 'Humana Serif': true, 'Imprint': true,
   14431   'Ionic No. 5': true, 'Janson': true, 'Joanna': true,
   14432   'Korinna': true, 'Lexicon': true, 'Liberation Serif': true,
   14433   'Linux Libertine': true, 'Literaturnaya': true, 'Lucida': true,
   14434   'Lucida Bright': true, 'Melior': true, 'Memphis': true,
   14435   'Miller': true, 'Minion': true, 'Modern': true,
   14436   'Mona Lisa': true, 'Mrs Eaves': true, 'MS Serif': true,
   14437   'Museo Slab': true, 'New York': true, 'Nimbus Roman': true,
   14438   'NPS Rawlinson Roadway': true, 'Palatino': true, 'Perpetua': true,
   14439   'Plantin': true, 'Plantin Schoolbook': true, 'Playbill': true,
   14440   'Poor Richard': true, 'Rawlinson Roadway': true, 'Renault': true,
   14441   'Requiem': true, 'Rockwell': true, 'Roman': true,
   14442   'Rotis Serif': true, 'Sabon': true, 'Scala': true,
   14443   'Seagull': true, 'Sistina': true, 'Souvenir': true,
   14444   'STIX': true, 'Stone Informal': true, 'Stone Serif': true,
   14445   'Sylfaen': true, 'Times': true, 'Trajan': true,
   14446   'Trinit': true, 'Trump Mediaeval': true, 'Utopia': true,
   14447   'Vale Type': true, 'Bitstream Vera': true, 'Vera Serif': true,
   14448   'Versailles': true, 'Wanted': true, 'Weiss': true,
   14449   'Wide Latin': true, 'Windsor': true, 'XITS': true
   14450 };
   14451 
   14452 var symbolsFonts = {
   14453   'Dingbats': true, 'Symbol': true, 'ZapfDingbats': true
   14454 };
   14455 
   14456 // Some characters, e.g. copyrightserif, mapped to the private use area and
   14457 // might not be displayed using standard fonts. Mapping/hacking well-known chars
   14458 // to the similar equivalents in the normal characters range.
   14459 function mapPrivateUseChars(code) {
   14460   switch (code) {
   14461     case 0xF8E9: // copyrightsans
   14462     case 0xF6D9: // copyrightserif
   14463       return 0x00A9; // copyright
   14464     default:
   14465       return code;
   14466   }
   14467 }
   14468 
   14469 var FontLoader = {
   14470   listeningForFontLoad: false,
   14471 
   14472   bind: function fontLoaderBind(fonts, callback) {
   14473     function checkFontsLoaded() {
   14474       for (var i = 0, ii = fonts.length; i < ii; i++) {
   14475         var fontObj = fonts[i];
   14476         if (fontObj.loading) {
   14477           return false;
   14478         }
   14479       }
   14480 
   14481       PdfJS_window.document.documentElement.removeEventListener(
   14482         'pdfjsFontLoad', checkFontsLoaded, false);
   14483 
   14484       callback();
   14485       return true;
   14486     }
   14487 
   14488     var rules = [], names = [], fontsToLoad = [];
   14489     var fontCreateTimer = 0;
   14490 
   14491     for (var i = 0, ii = fonts.length; i < ii; i++) {
   14492       var font = fonts[i];
   14493 
   14494       // Add the font to the DOM only once or skip if the font
   14495       // is already loaded.
   14496       if (font.attached || font.loading == false) {
   14497         continue;
   14498       }
   14499       font.attached = true;
   14500 
   14501       fontsToLoad.push(font);
   14502 
   14503       var str = '';
   14504       var data = font.data;
   14505       if (data) {
   14506         var length = data.length;
   14507         for (var j = 0; j < length; j++)
   14508           str += String.fromCharCode(data[j]);
   14509 
   14510         var rule = font.bindDOM(str);
   14511         if (rule) {
   14512           rules.push(rule);
   14513           names.push(font.loadedName);
   14514         }
   14515       }
   14516     }
   14517 
   14518     this.listeningForFontLoad = false;
   14519     if (!isWorker && rules.length) {
   14520       FontLoader.prepareFontLoadEvent(rules, names, fontsToLoad);
   14521     }
   14522 
   14523     if (!checkFontsLoaded()) {
   14524       PdfJS_window.document.documentElement.addEventListener(
   14525         'pdfjsFontLoad', checkFontsLoaded, false);
   14526     }
   14527   },
   14528   // Set things up so that at least one pdfjsFontLoad event is
   14529   // dispatched when all the @font-face |rules| for |names| have been
   14530   // loaded in a subdocument.  It's expected that the load of |rules|
   14531   // has already started in this (outer) document, so that they should
   14532   // be ordered before the load in the subdocument.
   14533   prepareFontLoadEvent: function fontLoaderPrepareFontLoadEvent(rules, names,
   14534                                                                 fonts) {
   14535       /** Hack begin */
   14536       // There's no event when a font has finished downloading so the
   14537       // following code is a dirty hack to 'guess' when a font is
   14538       // ready.  This code will be obsoleted by Mozilla bug 471915.
   14539       //
   14540       // The only reliable way to know if a font is loaded in Gecko
   14541       // (at the moment) is document.onload in a document with
   14542       // a @font-face rule defined in a "static" stylesheet.  We use a
   14543       // subdocument in an <iframe>, set up properly, to know when
   14544       // our @font-face rule was loaded.  However, the subdocument and
   14545       // outer document can't share CSS rules, so the inner document
   14546       // is only part of the puzzle.  The second piece is an invisible
   14547       // div created in order to force loading of the @font-face in
   14548       // the *outer* document.  (The font still needs to be loaded for
   14549       // its metrics, for reflow).  We create the div first for the
   14550       // outer document, then create the iframe.  Unless something
   14551       // goes really wonkily, we expect the @font-face for the outer
   14552       // document to be processed before the inner.  That's still
   14553       // fragile, but seems to work in practice.
   14554       //
   14555       // The postMessage() hackery was added to work around chrome bug
   14556       // 82402.
   14557 
   14558       // Validate the names parameter -- the values can used to construct HTML.
   14559       if (!/^\w+$/.test(names.join(''))) {
   14560         error('Invalid font name(s): ' + names.join());
   14561 
   14562         // Normally the error-function throws. But if a malicious code
   14563         // intercepts the function call then the return is needed.
   14564         return;
   14565       }
   14566 
   14567       var div = PdfJS_window.document.createElement('div');
   14568       div.setAttribute('style',
   14569                        'visibility: hidden;' +
   14570                        'width: 10px; height: 10px;' +
   14571                        'position: absolute; top: 0px; left: 0px;');
   14572       var html = '';
   14573       for (var i = 0, ii = names.length; i < ii; ++i) {
   14574         html += '<span style="font-family:' + names[i] + '">Hi</span>';
   14575       }
   14576       div.innerHTML = html;
   14577       PdfJS_window.document.body.appendChild(div);
   14578 
   14579       if (!this.listeningForFontLoad) {
   14580         PdfJS_window.window.addEventListener(
   14581           'message',
   14582           function fontLoaderMessage(e) {
   14583             var fontNames = JSON.parse(e.data);
   14584             for (var i = 0, ii = fonts.length; i < ii; ++i) {
   14585               var font = fonts[i];
   14586               font.loading = false;
   14587             }
   14588             var evt = PdfJS_window.document.createEvent('Events');
   14589             evt.initEvent('pdfjsFontLoad', true, false);
   14590             PdfJS_window.document.documentElement.dispatchEvent(evt);
   14591           },
   14592           false);
   14593         this.listeningForFontLoad = true;
   14594       }
   14595 
   14596       // XXX we should have a time-out here too, and maybe fire
   14597       // pdfjsFontLoadFailed?
   14598       var src = '<!DOCTYPE HTML><html><head>';
   14599       src += '<style type="text/css">';
   14600       for (var i = 0, ii = rules.length; i < ii; ++i) {
   14601         src += rules[i];
   14602       }
   14603       src += '</style>';
   14604       src += '<script type="application/javascript">';
   14605       var fontNamesArray = '';
   14606       for (var i = 0, ii = names.length; i < ii; ++i) {
   14607         fontNamesArray += '"' + names[i] + '", ';
   14608       }
   14609       src += '  var fontNames=[' + fontNamesArray + '];\n';
   14610       src += '  PdfJS_window.window.onload = function fontLoaderOnload() {\n';
   14611       src += '    parent.postMessage(JSON.stringify(fontNames), "*");\n';
   14612       src += '  }';
   14613       // Hack so the end script tag isn't counted if this is inline JS.
   14614       src += '</scr' + 'ipt></head><body>';
   14615       for (var i = 0, ii = names.length; i < ii; ++i) {
   14616         src += '<p style="font-family:\'' + names[i] + '\'">Hi</p>';
   14617       }
   14618       src += '</body></html>';
   14619       var frame = PdfJS_window.document.createElement('iframe');
   14620       frame.src = 'data:text/html,' + src;
   14621       frame.setAttribute('style',
   14622                          'visibility: hidden;' +
   14623                          'width: 10px; height: 10px;' +
   14624                          'position: absolute; top: 0px; left: 0px;');
   14625       PdfJS_window.document.body.appendChild(frame);
   14626       /** Hack end */
   14627   }
   14628 };
   14629 
   14630 var UnicodeRanges = [
   14631   { 'begin': 0x0000, 'end': 0x007F }, // Basic Latin
   14632   { 'begin': 0x0080, 'end': 0x00FF }, // Latin-1 Supplement
   14633   { 'begin': 0x0100, 'end': 0x017F }, // Latin Extended-A
   14634   { 'begin': 0x0180, 'end': 0x024F }, // Latin Extended-B
   14635   { 'begin': 0x0250, 'end': 0x02AF }, // IPA Extensions
   14636   { 'begin': 0x02B0, 'end': 0x02FF }, // Spacing Modifier Letters
   14637   { 'begin': 0x0300, 'end': 0x036F }, // Combining Diacritical Marks
   14638   { 'begin': 0x0370, 'end': 0x03FF }, // Greek and Coptic
   14639   { 'begin': 0x2C80, 'end': 0x2CFF }, // Coptic
   14640   { 'begin': 0x0400, 'end': 0x04FF }, // Cyrillic
   14641   { 'begin': 0x0530, 'end': 0x058F }, // Armenian
   14642   { 'begin': 0x0590, 'end': 0x05FF }, // Hebrew
   14643   { 'begin': 0xA500, 'end': 0xA63F }, // Vai
   14644   { 'begin': 0x0600, 'end': 0x06FF }, // Arabic
   14645   { 'begin': 0x07C0, 'end': 0x07FF }, // NKo
   14646   { 'begin': 0x0900, 'end': 0x097F }, // Devanagari
   14647   { 'begin': 0x0980, 'end': 0x09FF }, // Bengali
   14648   { 'begin': 0x0A00, 'end': 0x0A7F }, // Gurmukhi
   14649   { 'begin': 0x0A80, 'end': 0x0AFF }, // Gujarati
   14650   { 'begin': 0x0B00, 'end': 0x0B7F }, // Oriya
   14651   { 'begin': 0x0B80, 'end': 0x0BFF }, // Tamil
   14652   { 'begin': 0x0C00, 'end': 0x0C7F }, // Telugu
   14653   { 'begin': 0x0C80, 'end': 0x0CFF }, // Kannada
   14654   { 'begin': 0x0D00, 'end': 0x0D7F }, // Malayalam
   14655   { 'begin': 0x0E00, 'end': 0x0E7F }, // Thai
   14656   { 'begin': 0x0E80, 'end': 0x0EFF }, // Lao
   14657   { 'begin': 0x10A0, 'end': 0x10FF }, // Georgian
   14658   { 'begin': 0x1B00, 'end': 0x1B7F }, // Balinese
   14659   { 'begin': 0x1100, 'end': 0x11FF }, // Hangul Jamo
   14660   { 'begin': 0x1E00, 'end': 0x1EFF }, // Latin Extended Additional
   14661   { 'begin': 0x1F00, 'end': 0x1FFF }, // Greek Extended
   14662   { 'begin': 0x2000, 'end': 0x206F }, // General Punctuation
   14663   { 'begin': 0x2070, 'end': 0x209F }, // Superscripts And Subscripts
   14664   { 'begin': 0x20A0, 'end': 0x20CF }, // Currency Symbol
   14665   { 'begin': 0x20D0, 'end': 0x20FF }, // Combining Diacritical Marks For Symbols
   14666   { 'begin': 0x2100, 'end': 0x214F }, // Letterlike Symbols
   14667   { 'begin': 0x2150, 'end': 0x218F }, // Number Forms
   14668   { 'begin': 0x2190, 'end': 0x21FF }, // Arrows
   14669   { 'begin': 0x2200, 'end': 0x22FF }, // Mathematical Operators
   14670   { 'begin': 0x2300, 'end': 0x23FF }, // Miscellaneous Technical
   14671   { 'begin': 0x2400, 'end': 0x243F }, // Control Pictures
   14672   { 'begin': 0x2440, 'end': 0x245F }, // Optical Character Recognition
   14673   { 'begin': 0x2460, 'end': 0x24FF }, // Enclosed Alphanumerics
   14674   { 'begin': 0x2500, 'end': 0x257F }, // Box Drawing
   14675   { 'begin': 0x2580, 'end': 0x259F }, // Block Elements
   14676   { 'begin': 0x25A0, 'end': 0x25FF }, // Geometric Shapes
   14677   { 'begin': 0x2600, 'end': 0x26FF }, // Miscellaneous Symbols
   14678   { 'begin': 0x2700, 'end': 0x27BF }, // Dingbats
   14679   { 'begin': 0x3000, 'end': 0x303F }, // CJK Symbols And Punctuation
   14680   { 'begin': 0x3040, 'end': 0x309F }, // Hiragana
   14681   { 'begin': 0x30A0, 'end': 0x30FF }, // Katakana
   14682   { 'begin': 0x3100, 'end': 0x312F }, // Bopomofo
   14683   { 'begin': 0x3130, 'end': 0x318F }, // Hangul Compatibility Jamo
   14684   { 'begin': 0xA840, 'end': 0xA87F }, // Phags-pa
   14685   { 'begin': 0x3200, 'end': 0x32FF }, // Enclosed CJK Letters And Months
   14686   { 'begin': 0x3300, 'end': 0x33FF }, // CJK Compatibility
   14687   { 'begin': 0xAC00, 'end': 0xD7AF }, // Hangul Syllables
   14688   { 'begin': 0xD800, 'end': 0xDFFF }, // Non-Plane 0 *
   14689   { 'begin': 0x10900, 'end': 0x1091F }, // Phoenicia
   14690   { 'begin': 0x4E00, 'end': 0x9FFF }, // CJK Unified Ideographs
   14691   { 'begin': 0xE000, 'end': 0xF8FF }, // Private Use Area (plane 0)
   14692   { 'begin': 0x31C0, 'end': 0x31EF }, // CJK Strokes
   14693   { 'begin': 0xFB00, 'end': 0xFB4F }, // Alphabetic Presentation Forms
   14694   { 'begin': 0xFB50, 'end': 0xFDFF }, // Arabic Presentation Forms-A
   14695   { 'begin': 0xFE20, 'end': 0xFE2F }, // Combining Half Marks
   14696   { 'begin': 0xFE10, 'end': 0xFE1F }, // Vertical Forms
   14697   { 'begin': 0xFE50, 'end': 0xFE6F }, // Small Form Variants
   14698   { 'begin': 0xFE70, 'end': 0xFEFF }, // Arabic Presentation Forms-B
   14699   { 'begin': 0xFF00, 'end': 0xFFEF }, // Halfwidth And Fullwidth Forms
   14700   { 'begin': 0xFFF0, 'end': 0xFFFF }, // Specials
   14701   { 'begin': 0x0F00, 'end': 0x0FFF }, // Tibetan
   14702   { 'begin': 0x0700, 'end': 0x074F }, // Syriac
   14703   { 'begin': 0x0780, 'end': 0x07BF }, // Thaana
   14704   { 'begin': 0x0D80, 'end': 0x0DFF }, // Sinhala
   14705   { 'begin': 0x1000, 'end': 0x109F }, // Myanmar
   14706   { 'begin': 0x1200, 'end': 0x137F }, // Ethiopic
   14707   { 'begin': 0x13A0, 'end': 0x13FF }, // Cherokee
   14708   { 'begin': 0x1400, 'end': 0x167F }, // Unified Canadian Aboriginal Syllabics
   14709   { 'begin': 0x1680, 'end': 0x169F }, // Ogham
   14710   { 'begin': 0x16A0, 'end': 0x16FF }, // Runic
   14711   { 'begin': 0x1780, 'end': 0x17FF }, // Khmer
   14712   { 'begin': 0x1800, 'end': 0x18AF }, // Mongolian
   14713   { 'begin': 0x2800, 'end': 0x28FF }, // Braille Patterns
   14714   { 'begin': 0xA000, 'end': 0xA48F }, // Yi Syllables
   14715   { 'begin': 0x1700, 'end': 0x171F }, // Tagalog
   14716   { 'begin': 0x10300, 'end': 0x1032F }, // Old Italic
   14717   { 'begin': 0x10330, 'end': 0x1034F }, // Gothic
   14718   { 'begin': 0x10400, 'end': 0x1044F }, // Deseret
   14719   { 'begin': 0x1D000, 'end': 0x1D0FF }, // Byzantine Musical Symbols
   14720   { 'begin': 0x1D400, 'end': 0x1D7FF }, // Mathematical Alphanumeric Symbols
   14721   { 'begin': 0xFF000, 'end': 0xFFFFD }, // Private Use (plane 15)
   14722   { 'begin': 0xFE00, 'end': 0xFE0F }, // Variation Selectors
   14723   { 'begin': 0xE0000, 'end': 0xE007F }, // Tags
   14724   { 'begin': 0x1900, 'end': 0x194F }, // Limbu
   14725   { 'begin': 0x1950, 'end': 0x197F }, // Tai Le
   14726   { 'begin': 0x1980, 'end': 0x19DF }, // New Tai Lue
   14727   { 'begin': 0x1A00, 'end': 0x1A1F }, // Buginese
   14728   { 'begin': 0x2C00, 'end': 0x2C5F }, // Glagolitic
   14729   { 'begin': 0x2D30, 'end': 0x2D7F }, // Tifinagh
   14730   { 'begin': 0x4DC0, 'end': 0x4DFF }, // Yijing Hexagram Symbols
   14731   { 'begin': 0xA800, 'end': 0xA82F }, // Syloti Nagri
   14732   { 'begin': 0x10000, 'end': 0x1007F }, // Linear B Syllabary
   14733   { 'begin': 0x10140, 'end': 0x1018F }, // Ancient Greek Numbers
   14734   { 'begin': 0x10380, 'end': 0x1039F }, // Ugaritic
   14735   { 'begin': 0x103A0, 'end': 0x103DF }, // Old Persian
   14736   { 'begin': 0x10450, 'end': 0x1047F }, // Shavian
   14737   { 'begin': 0x10480, 'end': 0x104AF }, // Osmanya
   14738   { 'begin': 0x10800, 'end': 0x1083F }, // Cypriot Syllabary
   14739   { 'begin': 0x10A00, 'end': 0x10A5F }, // Kharoshthi
   14740   { 'begin': 0x1D300, 'end': 0x1D35F }, // Tai Xuan Jing Symbols
   14741   { 'begin': 0x12000, 'end': 0x123FF }, // Cuneiform
   14742   { 'begin': 0x1D360, 'end': 0x1D37F }, // Counting Rod Numerals
   14743   { 'begin': 0x1B80, 'end': 0x1BBF }, // Sundanese
   14744   { 'begin': 0x1C00, 'end': 0x1C4F }, // Lepcha
   14745   { 'begin': 0x1C50, 'end': 0x1C7F }, // Ol Chiki
   14746   { 'begin': 0xA880, 'end': 0xA8DF }, // Saurashtra
   14747   { 'begin': 0xA900, 'end': 0xA92F }, // Kayah Li
   14748   { 'begin': 0xA930, 'end': 0xA95F }, // Rejang
   14749   { 'begin': 0xAA00, 'end': 0xAA5F }, // Cham
   14750   { 'begin': 0x10190, 'end': 0x101CF }, // Ancient Symbols
   14751   { 'begin': 0x101D0, 'end': 0x101FF }, // Phaistos Disc
   14752   { 'begin': 0x102A0, 'end': 0x102DF }, // Carian
   14753   { 'begin': 0x1F030, 'end': 0x1F09F }  // Domino Tiles
   14754 ];
   14755 
   14756 var MacStandardGlyphOrdering = [
   14757   '.notdef', '.null', 'nonmarkingreturn', 'space', 'exclam', 'quotedbl',
   14758   'numbersign', 'dollar', 'percent', 'ampersand', 'quotesingle', 'parenleft',
   14759   'parenright', 'asterisk', 'plus', 'comma', 'hyphen', 'period', 'slash',
   14760   'zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight',
   14761   'nine', 'colon', 'semicolon', 'less', 'equal', 'greater', 'question', 'at',
   14762   'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O',
   14763   'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'bracketleft',
   14764   'backslash', 'bracketright', 'asciicircum', 'underscore', 'grave', 'a', 'b',
   14765   'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q',
   14766   'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'braceleft', 'bar', 'braceright',
   14767   'asciitilde', 'Adieresis', 'Aring', 'Ccedilla', 'Eacute', 'Ntilde',
   14768   'Odieresis', 'Udieresis', 'aacute', 'agrave', 'acircumflex', 'adieresis',
   14769   'atilde', 'aring', 'ccedilla', 'eacute', 'egrave', 'ecircumflex', 'edieresis',
   14770   'iacute', 'igrave', 'icircumflex', 'idieresis', 'ntilde', 'oacute', 'ograve',
   14771   'ocircumflex', 'odieresis', 'otilde', 'uacute', 'ugrave', 'ucircumflex',
   14772   'udieresis', 'dagger', 'degree', 'cent', 'sterling', 'section', 'bullet',
   14773   'paragraph', 'germandbls', 'registered', 'copyright', 'trademark', 'acute',
   14774   'dieresis', 'notequal', 'AE', 'Oslash', 'infinity', 'plusminus', 'lessequal',
   14775   'greaterequal', 'yen', 'mu', 'partialdiff', 'summation', 'product', 'pi',
   14776   'integral', 'ordfeminine', 'ordmasculine', 'Omega', 'ae', 'oslash',
   14777   'questiondown', 'exclamdown', 'logicalnot', 'radical', 'florin',
   14778   'approxequal', 'Delta', 'guillemotleft', 'guillemotright', 'ellipsis',
   14779   'nonbreakingspace', 'Agrave', 'Atilde', 'Otilde', 'OE', 'oe', 'endash',
   14780   'emdash', 'quotedblleft', 'quotedblright', 'quoteleft', 'quoteright',
   14781   'divide', 'lozenge', 'ydieresis', 'Ydieresis', 'fraction', 'currency',
   14782   'guilsinglleft', 'guilsinglright', 'fi', 'fl', 'daggerdbl', 'periodcentered',
   14783   'quotesinglbase', 'quotedblbase', 'perthousand', 'Acircumflex',
   14784   'Ecircumflex', 'Aacute', 'Edieresis', 'Egrave', 'Iacute', 'Icircumflex',
   14785   'Idieresis', 'Igrave', 'Oacute', 'Ocircumflex', 'apple', 'Ograve', 'Uacute',
   14786   'Ucircumflex', 'Ugrave', 'dotlessi', 'circumflex', 'tilde', 'macron',
   14787   'breve', 'dotaccent', 'ring', 'cedilla', 'hungarumlaut', 'ogonek', 'caron',
   14788   'Lslash', 'lslash', 'Scaron', 'scaron', 'Zcaron', 'zcaron', 'brokenbar',
   14789   'Eth', 'eth', 'Yacute', 'yacute', 'Thorn', 'thorn', 'minus', 'multiply',
   14790   'onesuperior', 'twosuperior', 'threesuperior', 'onehalf', 'onequarter',
   14791   'threequarters', 'franc', 'Gbreve', 'gbreve', 'Idotaccent', 'Scedilla',
   14792   'scedilla', 'Cacute', 'cacute', 'Ccaron', 'ccaron', 'dcroat'];
   14793 
   14794 function getUnicodeRangeFor(value) {
   14795   for (var i = 0, ii = UnicodeRanges.length; i < ii; i++) {
   14796     var range = UnicodeRanges[i];
   14797     if (value >= range.begin && value < range.end)
   14798       return i;
   14799   }
   14800   return -1;
   14801 }
   14802 
   14803 function isRTLRangeFor(value) {
   14804   var range = UnicodeRanges[13];
   14805   if (value >= range.begin && value < range.end)
   14806     return true;
   14807   range = UnicodeRanges[11];
   14808   if (value >= range.begin && value < range.end)
   14809     return true;
   14810   return false;
   14811 }
   14812 
   14813 function isSpecialUnicode(unicode) {
   14814   return (unicode <= 0x1F || (unicode >= 127 && unicode < kSizeOfGlyphArea)) ||
   14815     (unicode >= kCmapGlyphOffset &&
   14816     unicode < kCmapGlyphOffset + kSizeOfGlyphArea);
   14817 }
   14818 
   14819 /**
   14820  * 'Font' is the class the outside world should use, it encapsulate all the font
   14821  * decoding logics whatever type it is (assuming the font type is supported).
   14822  *
   14823  * For example to read a Type1 font and to attach it to the document:
   14824  *   var type1Font = new Font("MyFontName", binaryFile, propertiesObject);
   14825  *   type1Font.bind();
   14826  */
   14827 var Font = (function FontClosure() {
   14828   function Font(name, file, properties) {
   14829     this.name = name;
   14830     this.coded = properties.coded;
   14831     this.charProcOperatorList = properties.charProcOperatorList;
   14832     this.sizes = [];
   14833 
   14834     var names = name.split('+');
   14835     names = names.length > 1 ? names[1] : names[0];
   14836     names = names.split(/[-,_]/g)[0];
   14837     this.isSerifFont = !!(properties.flags & FontFlags.Serif);
   14838     this.isSymbolicFont = !!(properties.flags & FontFlags.Symbolic);
   14839 
   14840     var type = properties.type;
   14841     this.type = type;
   14842 
   14843     // If the font is to be ignored, register it like an already loaded font
   14844     // to avoid the cost of waiting for it be be loaded by the platform.
   14845     if (properties.ignore) {
   14846       this.loadedName = this.isSerifFont ? 'serif' : 'sans-serif';
   14847       this.loading = false;
   14848       return;
   14849     }
   14850 
   14851     this.differences = properties.differences;
   14852     this.widths = properties.widths;
   14853     this.defaultWidth = properties.defaultWidth;
   14854     this.composite = properties.composite;
   14855     this.wideChars = properties.wideChars;
   14856     this.hasEncoding = properties.hasEncoding;
   14857 
   14858     this.fontMatrix = properties.fontMatrix;
   14859     this.widthMultiplier = 1.0;
   14860     if (properties.type == 'Type3') {
   14861       this.encoding = properties.baseEncoding;
   14862       return;
   14863     }
   14864 
   14865     // Trying to fix encoding using glyph CIDSystemInfo.
   14866     this.loadCidToUnicode(properties);
   14867 
   14868     if (properties.toUnicode)
   14869       this.toUnicode = properties.toUnicode;
   14870     else
   14871       this.rebuildToUnicode(properties);
   14872 
   14873     this.toFontChar = this.buildToFontChar(this.toUnicode);
   14874 
   14875     if (!file) {
   14876       // The file data is not specified. Trying to fix the font name
   14877       // to be used with the canvas.font.
   14878       var fontName = name.replace(/[,_]/g, '-');
   14879       fontName = stdFontMap[fontName] || nonStdFontMap[fontName] || fontName;
   14880 
   14881       this.bold = (fontName.search(/bold/gi) != -1);
   14882       this.italic = (fontName.search(/oblique/gi) != -1) ||
   14883                     (fontName.search(/italic/gi) != -1);
   14884 
   14885       // Use 'name' instead of 'fontName' here because the original
   14886       // name ArialBlack for example will be replaced by Helvetica.
   14887       this.black = (name.search(/Black/g) != -1);
   14888 
   14889       this.encoding = properties.baseEncoding;
   14890       this.noUnicodeAdaptation = true;
   14891       this.loadedName = fontName.split('-')[0];
   14892       this.loading = false;
   14893       return;
   14894     }
   14895 
   14896     var data;
   14897     switch (type) {
   14898       case 'Type1':
   14899       case 'CIDFontType0':
   14900         this.mimetype = 'font/opentype';
   14901 
   14902         var subtype = properties.subtype;
   14903         var cff = (subtype == 'Type1C' || subtype == 'CIDFontType0C') ?
   14904           new CFFFont(file, properties) : new Type1Font(name, file, properties);
   14905 
   14906         // Wrap the CFF data inside an OTF font file
   14907         data = this.convert(name, cff, properties);
   14908         break;
   14909 
   14910       case 'TrueType':
   14911       case 'CIDFontType2':
   14912         this.mimetype = 'font/opentype';
   14913 
   14914         // Repair the TrueType file. It is can be damaged in the point of
   14915         // view of the sanitizer
   14916         data = this.checkAndRepair(name, file, properties);
   14917         break;
   14918 
   14919       default:
   14920         warn('Font ' + properties.type + ' is not supported');
   14921         break;
   14922     }
   14923 
   14924     this.data = data;
   14925     this.fontMatrix = properties.fontMatrix;
   14926     this.widthMultiplier = !properties.fontMatrix ? 1.0 :
   14927       1.0 / properties.fontMatrix[0];
   14928     this.encoding = properties.baseEncoding;
   14929     this.loadedName = properties.loadedName;
   14930     this.loading = true;
   14931   };
   14932 
   14933   var numFonts = 0;
   14934   function getUniqueName() {
   14935     return 'pdfFont' + numFonts++;
   14936   }
   14937 
   14938   function stringToArray(str) {
   14939     var array = [];
   14940     for (var i = 0, ii = str.length; i < ii; ++i)
   14941       array[i] = str.charCodeAt(i);
   14942 
   14943     return array;
   14944   };
   14945 
   14946   function arrayToString(arr) {
   14947     var str = '';
   14948     for (var i = 0, ii = arr.length; i < ii; ++i)
   14949       str += String.fromCharCode(arr[i]);
   14950 
   14951     return str;
   14952   };
   14953 
   14954   function int16(bytes) {
   14955     return (bytes[0] << 8) + (bytes[1] & 0xff);
   14956   };
   14957 
   14958   function int32(bytes) {
   14959     return (bytes[0] << 24) + (bytes[1] << 16) +
   14960            (bytes[2] << 8) + (bytes[3] & 0xff);
   14961   };
   14962 
   14963   function getMaxPower2(number) {
   14964     var maxPower = 0;
   14965     var value = number;
   14966     while (value >= 2) {
   14967       value /= 2;
   14968       maxPower++;
   14969     }
   14970 
   14971     value = 2;
   14972     for (var i = 1; i < maxPower; i++)
   14973       value *= 2;
   14974     return value;
   14975   };
   14976 
   14977   function string16(value) {
   14978     return String.fromCharCode((value >> 8) & 0xff) +
   14979            String.fromCharCode(value & 0xff);
   14980   };
   14981 
   14982   function safeString16(value) {
   14983     // clamp value to the 16-bit int range
   14984     value = value > 0x7FFF ? 0x7FFF : value < -0x8000 ? -0x8000 : value;
   14985     return String.fromCharCode((value >> 8) & 0xff) +
   14986            String.fromCharCode(value & 0xff);
   14987   };
   14988 
   14989   function string32(value) {
   14990     return String.fromCharCode((value >> 24) & 0xff) +
   14991            String.fromCharCode((value >> 16) & 0xff) +
   14992            String.fromCharCode((value >> 8) & 0xff) +
   14993            String.fromCharCode(value & 0xff);
   14994   };
   14995 
   14996   function createOpenTypeHeader(sfnt, file, numTables) {
   14997     // Windows hates the Mac TrueType sfnt version number
   14998     if (sfnt == 'true')
   14999       sfnt = string32(0x00010000);
   15000 
   15001     // sfnt version (4 bytes)
   15002     var header = sfnt;
   15003 
   15004     // numTables (2 bytes)
   15005     header += string16(numTables);
   15006 
   15007     // searchRange (2 bytes)
   15008     var tablesMaxPower2 = getMaxPower2(numTables);
   15009     var searchRange = tablesMaxPower2 * 16;
   15010     header += string16(searchRange);
   15011 
   15012     // entrySelector (2 bytes)
   15013     header += string16(Math.log(tablesMaxPower2) / Math.log(2));
   15014 
   15015     // rangeShift (2 bytes)
   15016     header += string16(numTables * 16 - searchRange);
   15017 
   15018     file.file += header;
   15019     file.virtualOffset += header.length;
   15020   };
   15021 
   15022   function createTableEntry(file, tag, data) {
   15023     // offset
   15024     var offset = file.virtualOffset;
   15025 
   15026     // length
   15027     var length = data.length;
   15028 
   15029     // Per spec tables must be 4-bytes align so add padding as needed
   15030     while (data.length & 3)
   15031       data.push(0x00);
   15032 
   15033     while (file.virtualOffset & 3)
   15034       file.virtualOffset++;
   15035 
   15036     // checksum
   15037     var checksum = 0, n = data.length;
   15038     for (var i = 0; i < n; i += 4)
   15039       checksum = (checksum + int32([data[i], data[i + 1], data[i + 2],
   15040                                     data[i + 3]])) | 0;
   15041 
   15042     var tableEntry = (tag + string32(checksum) +
   15043                       string32(offset) + string32(length));
   15044     file.file += tableEntry;
   15045     file.virtualOffset += data.length;
   15046   };
   15047 
   15048   function getRanges(glyphs) {
   15049     // Array.sort() sorts by characters, not numerically, so convert to an
   15050     // array of characters.
   15051     var codes = [];
   15052     var length = glyphs.length;
   15053     for (var n = 0; n < length; ++n)
   15054       codes.push({ unicode: glyphs[n].unicode, code: n });
   15055     codes.sort(function fontGetRangesSort(a, b) {
   15056       return a.unicode - b.unicode;
   15057     });
   15058 
   15059     // Split the sorted codes into ranges.
   15060     var ranges = [];
   15061     for (var n = 0; n < length; ) {
   15062       var start = codes[n].unicode;
   15063       var codeIndices = [codes[n].code];
   15064       ++n;
   15065       var end = start;
   15066       while (n < length && end + 1 == codes[n].unicode) {
   15067         codeIndices.push(codes[n].code);
   15068         ++end;
   15069         ++n;
   15070       }
   15071       ranges.push([start, end, codeIndices]);
   15072     }
   15073 
   15074     return ranges;
   15075   };
   15076 
   15077   function createCMapTable(glyphs, deltas) {
   15078     var ranges = getRanges(glyphs);
   15079 
   15080     var numTables = 1;
   15081     var cmap = '\x00\x00' + // version
   15082                string16(numTables) +  // numTables
   15083                '\x00\x03' + // platformID
   15084                '\x00\x01' + // encodingID
   15085                string32(4 + numTables * 8); // start of the table record
   15086 
   15087     var segCount = ranges.length + 1;
   15088     var segCount2 = segCount * 2;
   15089     var searchRange = getMaxPower2(segCount) * 2;
   15090     var searchEntry = Math.log(segCount) / Math.log(2);
   15091     var rangeShift = 2 * segCount - searchRange;
   15092 
   15093     // Fill up the 4 parallel arrays describing the segments.
   15094     var startCount = '';
   15095     var endCount = '';
   15096     var idDeltas = '';
   15097     var idRangeOffsets = '';
   15098     var glyphsIds = '';
   15099     var bias = 0;
   15100 
   15101     if (deltas) {
   15102       for (var i = 0; i < segCount - 1; i++) {
   15103         var range = ranges[i];
   15104         var start = range[0];
   15105         var end = range[1];
   15106         var offset = (segCount - i) * 2 + bias * 2;
   15107         bias += (end - start + 1);
   15108 
   15109         startCount += string16(start);
   15110         endCount += string16(end);
   15111         idDeltas += string16(0);
   15112         idRangeOffsets += string16(offset);
   15113 
   15114         var codes = range[2];
   15115         for (var j = 0, jj = codes.length; j < jj; ++j)
   15116           glyphsIds += string16(deltas[codes[j]]);
   15117       }
   15118     } else {
   15119       for (var i = 0; i < segCount - 1; i++) {
   15120         var range = ranges[i];
   15121         var start = range[0];
   15122         var end = range[1];
   15123         var startCode = range[2][0];
   15124 
   15125         startCount += string16(start);
   15126         endCount += string16(end);
   15127         idDeltas += string16((startCode - start + 1) & 0xFFFF);
   15128         idRangeOffsets += string16(0);
   15129       }
   15130     }
   15131 
   15132     endCount += '\xFF\xFF';
   15133     startCount += '\xFF\xFF';
   15134     idDeltas += '\x00\x01';
   15135     idRangeOffsets += '\x00\x00';
   15136 
   15137     var format314 = '\x00\x00' + // language
   15138                     string16(segCount2) +
   15139                     string16(searchRange) +
   15140                     string16(searchEntry) +
   15141                     string16(rangeShift) +
   15142                     endCount + '\x00\x00' + startCount +
   15143                     idDeltas + idRangeOffsets + glyphsIds;
   15144 
   15145     return stringToArray(cmap +
   15146                          '\x00\x04' + // format
   15147                          string16(format314.length + 4) + // length
   15148                          format314);
   15149   };
   15150 
   15151   function createOS2Table(properties, charstrings, override) {
   15152     override = override || {
   15153       unitsPerEm: 0,
   15154       yMax: 0,
   15155       yMin: 0,
   15156       ascent: 0,
   15157       descent: 0
   15158     };
   15159 
   15160     var ulUnicodeRange1 = 0;
   15161     var ulUnicodeRange2 = 0;
   15162     var ulUnicodeRange3 = 0;
   15163     var ulUnicodeRange4 = 0;
   15164 
   15165     var firstCharIndex = null;
   15166     var lastCharIndex = 0;
   15167 
   15168     if (charstrings) {
   15169       for (var i = 0; i < charstrings.length; ++i) {
   15170         var code = charstrings[i].unicode;
   15171         if (firstCharIndex > code || !firstCharIndex)
   15172           firstCharIndex = code;
   15173         if (lastCharIndex < code)
   15174           lastCharIndex = code;
   15175 
   15176         var position = getUnicodeRangeFor(code);
   15177         if (position < 32) {
   15178           ulUnicodeRange1 |= 1 << position;
   15179         } else if (position < 64) {
   15180           ulUnicodeRange2 |= 1 << position - 32;
   15181         } else if (position < 96) {
   15182           ulUnicodeRange3 |= 1 << position - 64;
   15183         } else if (position < 123) {
   15184           ulUnicodeRange4 |= 1 << position - 96;
   15185         } else {
   15186           error('Unicode ranges Bits > 123 are reserved for internal usage');
   15187         }
   15188       }
   15189     } else {
   15190       // TODO
   15191       firstCharIndex = 0;
   15192       lastCharIndex = 255;
   15193     }
   15194 
   15195     var unitsPerEm = override.unitsPerEm || kPDFGlyphSpaceUnits;
   15196     var typoAscent = override.ascent || properties.ascent;
   15197     var typoDescent = override.descent || properties.descent;
   15198     var winAscent = override.yMax || typoAscent;
   15199     var winDescent = -override.yMin || -typoDescent;
   15200 
   15201     // if there is a units per em value but no other override
   15202     // then scale the calculated ascent
   15203     if (unitsPerEm != kPDFGlyphSpaceUnits &&
   15204         'undefined' == typeof(override.ascent)) {
   15205       // if the font units differ to the PDF glyph space units
   15206       // then scale up the values
   15207       typoAscent = Math.round(typoAscent * unitsPerEm / kPDFGlyphSpaceUnits);
   15208       typoDescent = Math.round(typoDescent * unitsPerEm / kPDFGlyphSpaceUnits);
   15209       winAscent = typoAscent;
   15210       winDescent = -typoDescent;
   15211     }
   15212 
   15213     return '\x00\x03' + // version
   15214            '\x02\x24' + // xAvgCharWidth
   15215            '\x01\xF4' + // usWeightClass
   15216            '\x00\x05' + // usWidthClass
   15217            '\x00\x00' + // fstype (0 to let the font loads via font-face on IE)
   15218            '\x02\x8A' + // ySubscriptXSize
   15219            '\x02\xBB' + // ySubscriptYSize
   15220            '\x00\x00' + // ySubscriptXOffset
   15221            '\x00\x8C' + // ySubscriptYOffset
   15222            '\x02\x8A' + // ySuperScriptXSize
   15223            '\x02\xBB' + // ySuperScriptYSize
   15224            '\x00\x00' + // ySuperScriptXOffset
   15225            '\x01\xDF' + // ySuperScriptYOffset
   15226            '\x00\x31' + // yStrikeOutSize
   15227            '\x01\x02' + // yStrikeOutPosition
   15228            '\x00\x00' + // sFamilyClass
   15229            '\x00\x00\x06' +
   15230            String.fromCharCode(properties.fixedPitch ? 0x09 : 0x00) +
   15231            '\x00\x00\x00\x00\x00\x00' + // Panose
   15232            string32(ulUnicodeRange1) + // ulUnicodeRange1 (Bits 0-31)
   15233            string32(ulUnicodeRange2) + // ulUnicodeRange2 (Bits 32-63)
   15234            string32(ulUnicodeRange3) + // ulUnicodeRange3 (Bits 64-95)
   15235            string32(ulUnicodeRange4) + // ulUnicodeRange4 (Bits 96-127)
   15236            '\x2A\x32\x31\x2A' + // achVendID
   15237            string16(properties.italicAngle ? 1 : 0) + // fsSelection
   15238            string16(firstCharIndex ||
   15239                     properties.firstChar) + // usFirstCharIndex
   15240            string16(lastCharIndex || properties.lastChar) +  // usLastCharIndex
   15241            string16(typoAscent) + // sTypoAscender
   15242            string16(typoDescent) + // sTypoDescender
   15243            '\x00\x64' + // sTypoLineGap (7%-10% of the unitsPerEM value)
   15244            string16(winAscent) + // usWinAscent
   15245            string16(winDescent) + // usWinDescent
   15246            '\x00\x00\x00\x00' + // ulCodePageRange1 (Bits 0-31)
   15247            '\x00\x00\x00\x00' + // ulCodePageRange2 (Bits 32-63)
   15248            string16(properties.xHeight) + // sxHeight
   15249            string16(properties.capHeight) + // sCapHeight
   15250            string16(0) + // usDefaultChar
   15251            string16(firstCharIndex || properties.firstChar) + // usBreakChar
   15252            '\x00\x03';  // usMaxContext
   15253   };
   15254 
   15255   function createPostTable(properties) {
   15256     var angle = Math.floor(properties.italicAngle * (Math.pow(2, 16)));
   15257     return '\x00\x03\x00\x00' + // Version number
   15258            string32(angle) + // italicAngle
   15259            '\x00\x00' + // underlinePosition
   15260            '\x00\x00' + // underlineThickness
   15261            string32(properties.fixedPitch) + // isFixedPitch
   15262            '\x00\x00\x00\x00' + // minMemType42
   15263            '\x00\x00\x00\x00' + // maxMemType42
   15264            '\x00\x00\x00\x00' + // minMemType1
   15265            '\x00\x00\x00\x00';  // maxMemType1
   15266   };
   15267 
   15268   function createNameTable(name) {
   15269     var strings = [
   15270       'Original licence',  // 0.Copyright
   15271       name,                // 1.Font family
   15272       'Unknown',           // 2.Font subfamily (font weight)
   15273       'uniqueID',          // 3.Unique ID
   15274       name,                // 4.Full font name
   15275       'Version 0.11',      // 5.Version
   15276       '',                  // 6.Postscript name
   15277       'Unknown',           // 7.Trademark
   15278       'Unknown',           // 8.Manufacturer
   15279       'Unknown'            // 9.Designer
   15280     ];
   15281 
   15282     // Mac want 1-byte per character strings while Windows want
   15283     // 2-bytes per character, so duplicate the names table
   15284     var stringsUnicode = [];
   15285     for (var i = 0, ii = strings.length; i < ii; i++) {
   15286       var str = strings[i];
   15287 
   15288       var strUnicode = '';
   15289       for (var j = 0, jj = str.length; j < jj; j++)
   15290         strUnicode += string16(str.charCodeAt(j));
   15291       stringsUnicode.push(strUnicode);
   15292     }
   15293 
   15294     var names = [strings, stringsUnicode];
   15295     var platforms = ['\x00\x01', '\x00\x03'];
   15296     var encodings = ['\x00\x00', '\x00\x01'];
   15297     var languages = ['\x00\x00', '\x04\x09'];
   15298 
   15299     var namesRecordCount = strings.length * platforms.length;
   15300     var nameTable =
   15301       '\x00\x00' +                           // format
   15302       string16(namesRecordCount) +           // Number of names Record
   15303       string16(namesRecordCount * 12 + 6);   // Storage
   15304 
   15305     // Build the name records field
   15306     var strOffset = 0;
   15307     for (var i = 0, ii = platforms.length; i < ii; i++) {
   15308       var strs = names[i];
   15309       for (var j = 0, jj = strs.length; j < jj; j++) {
   15310         var str = strs[j];
   15311         var nameRecord =
   15312           platforms[i] + // platform ID
   15313           encodings[i] + // encoding ID
   15314           languages[i] + // language ID
   15315           string16(j) + // name ID
   15316           string16(str.length) +
   15317           string16(strOffset);
   15318         nameTable += nameRecord;
   15319         strOffset += str.length;
   15320       }
   15321     }
   15322 
   15323     nameTable += strings.join('') + stringsUnicode.join('');
   15324     return nameTable;
   15325   }
   15326 
   15327   Font.prototype = {
   15328     name: null,
   15329     font: null,
   15330     mimetype: null,
   15331     encoding: null,
   15332 
   15333     checkAndRepair: function Font_checkAndRepair(name, font, properties) {
   15334       function readTableEntry(file) {
   15335         var tag = file.getBytes(4);
   15336         tag = String.fromCharCode(tag[0]) +
   15337               String.fromCharCode(tag[1]) +
   15338               String.fromCharCode(tag[2]) +
   15339               String.fromCharCode(tag[3]);
   15340 
   15341         var checksum = int32(file.getBytes(4));
   15342         var offset = int32(file.getBytes(4));
   15343         var length = int32(file.getBytes(4));
   15344 
   15345         // Read the table associated data
   15346         var previousPosition = file.pos;
   15347         file.pos = file.start ? file.start : 0;
   15348         file.skip(offset);
   15349         var data = file.getBytes(length);
   15350         file.pos = previousPosition;
   15351 
   15352         if (tag == 'head') {
   15353           // clearing checksum adjustment
   15354           data[8] = data[9] = data[10] = data[11] = 0;
   15355           data[17] |= 0x20; //Set font optimized for cleartype flag
   15356         }
   15357 
   15358         return {
   15359           tag: tag,
   15360           checksum: checksum,
   15361           length: length,
   15362           offset: offset,
   15363           data: data
   15364         };
   15365       };
   15366 
   15367       function readOpenTypeHeader(ttf) {
   15368         return {
   15369           version: arrayToString(ttf.getBytes(4)),
   15370           numTables: int16(ttf.getBytes(2)),
   15371           searchRange: int16(ttf.getBytes(2)),
   15372           entrySelector: int16(ttf.getBytes(2)),
   15373           rangeShift: int16(ttf.getBytes(2))
   15374         };
   15375       };
   15376 
   15377       function createGlyphNameMap(glyphs, ids, properties) {
   15378         var glyphNames = properties.glyphNames;
   15379         if (!glyphNames) {
   15380           properties.glyphNameMap = {};
   15381           return;
   15382         }
   15383         var glyphsLength = glyphs.length;
   15384         var glyphNameMap = {};
   15385         var encoding = [];
   15386         for (var i = 0; i < glyphsLength; ++i) {
   15387           var glyphName = glyphNames[ids[i]];
   15388           if (!glyphName)
   15389             continue;
   15390           var unicode = glyphs[i].unicode;
   15391           glyphNameMap[glyphName] = unicode;
   15392           var code = glyphs[i].code;
   15393           encoding[code] = glyphName;
   15394         }
   15395         properties.glyphNameMap = glyphNameMap;
   15396         if (!properties.hasEncoding)
   15397           properties.baseEncoding = encoding;
   15398       }
   15399 
   15400       function readCMapTable(cmap, font) {
   15401         var start = (font.start ? font.start : 0) + cmap.offset;
   15402         font.pos = start;
   15403 
   15404         var version = int16(font.getBytes(2));
   15405         var numRecords = int16(font.getBytes(2));
   15406 
   15407         var records = [];
   15408         for (var i = 0; i < numRecords; i++) {
   15409           records.push({
   15410             platformID: int16(font.getBytes(2)),
   15411             encodingID: int16(font.getBytes(2)),
   15412             offset: int32(font.getBytes(4))
   15413           });
   15414         }
   15415 
   15416         // Check that table are sorted by platformID then encodingID,
   15417         records.sort(function fontReadCMapTableSort(a, b) {
   15418           return ((a.platformID << 16) + a.encodingID) -
   15419                  ((b.platformID << 16) + b.encodingID);
   15420         });
   15421 
   15422         var tables = [records[0]];
   15423         for (var i = 1; i < numRecords; i++) {
   15424           // The sanitizer will drop the font if 2 tables have the same
   15425           // platformID and the same encodingID, this will be correct for
   15426           // most cases but if the font has been made for Mac it could
   15427           // exist a few platformID: 1, encodingID: 0 but with a different
   15428           // language field and that's correct. But the sanitizer does not
   15429           // seem to support this case.
   15430           var current = records[i];
   15431           var previous = records[i - 1];
   15432           if (((current.platformID << 16) + current.encodingID) <=
   15433              ((previous.platformID << 16) + previous.encodingID))
   15434                 continue;
   15435           tables.push(current);
   15436         }
   15437 
   15438         var missing = numRecords - tables.length;
   15439         if (missing) {
   15440           numRecords = tables.length;
   15441           var data = string16(version) + string16(numRecords);
   15442 
   15443           for (var i = 0; i < numRecords; i++) {
   15444             var table = tables[i];
   15445             data += string16(table.platformID) +
   15446                     string16(table.encodingID) +
   15447                     string32(table.offset);
   15448           }
   15449 
   15450           for (var i = 0, ii = data.length; i < ii; i++)
   15451             cmap.data[i] = data.charCodeAt(i);
   15452         }
   15453 
   15454         for (var i = 0; i < numRecords; i++) {
   15455           var table = tables[i];
   15456           font.pos = start + table.offset;
   15457 
   15458           var format = int16(font.getBytes(2));
   15459           var length = int16(font.getBytes(2));
   15460           var language = int16(font.getBytes(2));
   15461 
   15462           if (format == 0) {
   15463             // Characters below 0x20 are controls characters that are hardcoded
   15464             // into the platform so if some characters in the font are assigned
   15465             // under this limit they will not be displayed so let's rewrite the
   15466             // CMap.
   15467             var glyphs = [];
   15468             var ids = [];
   15469             for (var j = 0; j < 256; j++) {
   15470               var index = font.getByte();
   15471               if (index) {
   15472                 glyphs.push({ unicode: j, code: j });
   15473                 ids.push(index);
   15474               }
   15475             }
   15476             return {
   15477               glyphs: glyphs,
   15478               ids: ids,
   15479               hasShortCmap: true
   15480             };
   15481           } else if (format == 4) {
   15482             // re-creating the table in format 4 since the encoding
   15483             // might be changed
   15484             var segCount = (int16(font.getBytes(2)) >> 1);
   15485             font.getBytes(6); // skipping range fields
   15486             var segIndex, segments = [];
   15487             for (segIndex = 0; segIndex < segCount; segIndex++) {
   15488               segments.push({ end: int16(font.getBytes(2)) });
   15489             }
   15490             font.getBytes(2);
   15491             for (segIndex = 0; segIndex < segCount; segIndex++) {
   15492               segments[segIndex].start = int16(font.getBytes(2));
   15493             }
   15494 
   15495             for (segIndex = 0; segIndex < segCount; segIndex++) {
   15496               segments[segIndex].delta = int16(font.getBytes(2));
   15497             }
   15498 
   15499             var offsetsCount = 0;
   15500             for (segIndex = 0; segIndex < segCount; segIndex++) {
   15501               var segment = segments[segIndex];
   15502               var rangeOffset = int16(font.getBytes(2));
   15503               if (!rangeOffset) {
   15504                 segment.offsetIndex = -1;
   15505                 continue;
   15506               }
   15507 
   15508               var offsetIndex = (rangeOffset >> 1) - (segCount - segIndex);
   15509               segment.offsetIndex = offsetIndex;
   15510               offsetsCount = Math.max(offsetsCount, offsetIndex +
   15511                 segment.end - segment.start + 1);
   15512             }
   15513 
   15514             var offsets = [];
   15515             for (var j = 0; j < offsetsCount; j++)
   15516               offsets.push(int16(font.getBytes(2)));
   15517 
   15518             var glyphs = [], ids = [];
   15519 
   15520             for (segIndex = 0; segIndex < segCount; segIndex++) {
   15521               var segment = segments[segIndex];
   15522               var start = segment.start, end = segment.end;
   15523               var delta = segment.delta, offsetIndex = segment.offsetIndex;
   15524 
   15525               for (var j = start; j <= end; j++) {
   15526                 if (j == 0xFFFF)
   15527                   continue;
   15528 
   15529                 var glyphCode = offsetIndex < 0 ? j :
   15530                   offsets[offsetIndex + j - start];
   15531                 glyphCode = (glyphCode + delta) & 0xFFFF;
   15532                 if (glyphCode == 0)
   15533                   continue;
   15534 
   15535                 glyphs.push({ unicode: j, code: j });
   15536                 ids.push(glyphCode);
   15537               }
   15538             }
   15539 
   15540             return {
   15541               glyphs: glyphs,
   15542               ids: ids
   15543             };
   15544           } else if (format == 6) {
   15545             // Format 6 is a 2-bytes dense mapping, which means the font data
   15546             // lives glue together even if they are pretty far in the unicode
   15547             // table. (This looks weird, so I can have missed something), this
   15548             // works on Linux but seems to fails on Mac so let's rewrite the
   15549             // cmap table to a 3-1-4 style
   15550             var firstCode = int16(font.getBytes(2));
   15551             var entryCount = int16(font.getBytes(2));
   15552 
   15553             var glyphs = [];
   15554             var ids = [];
   15555             for (var j = 0; j < entryCount; j++) {
   15556               var glyphCode = int16(font.getBytes(2));
   15557               var code = firstCode + j;
   15558 
   15559               glyphs.push({ unicode: code, code: code });
   15560               ids.push(glyphCode);
   15561             }
   15562 
   15563             return {
   15564               glyphs: glyphs,
   15565               ids: ids
   15566             };
   15567           }
   15568         }
   15569         error('Unsupported cmap table format');
   15570       };
   15571 
   15572       function sanitizeMetrics(font, header, metrics, numGlyphs) {
   15573         if (!header && !metrics)
   15574           return;
   15575 
   15576         // The vhea/vmtx tables are not required, so it happens that
   15577         // some fonts embed a vmtx table without a vhea table. In this
   15578         // situation the sanitizer assume numOfLongVerMetrics = 1. As
   15579         // a result it tries to read numGlyphs - 1 SHORT from the vmtx
   15580         // table, and if it is not possible, the font is rejected.
   15581         // So remove the vmtx table if there is no vhea table.
   15582         if (!header && metrics) {
   15583           metrics.data = null;
   15584           return;
   15585         }
   15586 
   15587         font.pos = (font.start ? font.start : 0) + header.offset;
   15588         font.pos += header.length - 2;
   15589         var numOfMetrics = int16(font.getBytes(2));
   15590 
   15591         var numOfSidebearings = numGlyphs - numOfMetrics;
   15592         var numMissing = numOfSidebearings -
   15593           ((hmtx.length - numOfMetrics * 4) >> 1);
   15594         if (numMissing > 0) {
   15595           font.pos = (font.start ? font.start : 0) + metrics.offset;
   15596           var entries = '';
   15597           for (var i = 0, ii = hmtx.length; i < ii; i++)
   15598             entries += String.fromCharCode(font.getByte());
   15599           for (var i = 0; i < numMissing; i++)
   15600             entries += '\x00\x00';
   15601           metrics.data = stringToArray(entries);
   15602         }
   15603       };
   15604 
   15605       function sanitizeGlyph(source, sourceStart, sourceEnd, dest, destStart) {
   15606         if (sourceEnd - sourceStart <= 12) {
   15607           // glyph with data less than 12 is invalid one
   15608           return 0;
   15609         }
   15610         var glyf = source.subarray(sourceStart, sourceEnd);
   15611         var contoursCount = (glyf[0] << 8) | glyf[1];
   15612         if (contoursCount & 0x8000) {
   15613           // complex glyph, writing as is
   15614           dest.set(glyf, destStart);
   15615           return glyf.length;
   15616         }
   15617 
   15618         var j = 10, flagsCount = 0;
   15619         for (var i = 0; i < contoursCount; i++) {
   15620           var endPoint = (glyf[j] << 8) | glyf[j + 1];
   15621           flagsCount = endPoint + 1;
   15622           j += 2;
   15623         }
   15624         // skipping instructions
   15625         var instructionsLength = (glyf[j] << 8) | glyf[j + 1];
   15626         j += 2 + instructionsLength;
   15627         // validating flags
   15628         var coordinatesLength = 0;
   15629         for (var i = 0; i < flagsCount; i++) {
   15630           var flag = glyf[j++];
   15631           if (flag & 0xC0) {
   15632             // reserved flags must be zero, rejecting
   15633             return 0;
   15634           }
   15635           var xyLength = ((flag & 2) ? 1 : (flag & 16) ? 0 : 2) +
   15636                          ((flag & 4) ? 1 : (flag & 32) ? 0 : 2);
   15637           coordinatesLength += xyLength;
   15638           if (flag & 8) {
   15639             var repeat = glyf[j++];
   15640             i += repeat;
   15641             coordinatesLength += repeat * xyLength;
   15642           }
   15643         }
   15644         var glyphDataLength = j + coordinatesLength;
   15645         if (glyphDataLength > glyf.length) {
   15646           // not enough data for coordinates
   15647           return 0;
   15648         }
   15649         if (glyf.length - glyphDataLength > 3) {
   15650           // truncating and aligning to 4 bytes the long glyph data
   15651           glyphDataLength = (glyphDataLength + 3) & ~3;
   15652           dest.set(glyf.subarray(0, glyphDataLength), destStart);
   15653           return glyphDataLength;
   15654         }
   15655         // glyph data is fine
   15656         dest.set(glyf, destStart);
   15657         return glyf.length;
   15658       }
   15659 
   15660       function sanitizeGlyphLocations(loca, glyf, numGlyphs,
   15661                                       isGlyphLocationsLong) {
   15662         var itemSize, itemDecode, itemEncode;
   15663         if (isGlyphLocationsLong) {
   15664           itemSize = 4;
   15665           itemDecode = function fontItemDecodeLong(data, offset) {
   15666             return (data[offset] << 24) | (data[offset + 1] << 16) |
   15667                    (data[offset + 2] << 8) | data[offset + 3];
   15668           };
   15669           itemEncode = function fontItemEncodeLong(data, offset, value) {
   15670             data[offset] = (value >>> 24) & 0xFF;
   15671             data[offset + 1] = (value >> 16) & 0xFF;
   15672             data[offset + 2] = (value >> 8) & 0xFF;
   15673             data[offset + 3] = value & 0xFF;
   15674           };
   15675         } else {
   15676           itemSize = 2;
   15677           itemDecode = function fontItemDecode(data, offset) {
   15678             return (data[offset] << 9) | (data[offset + 1] << 1);
   15679           };
   15680           itemEncode = function fontItemEncode(data, offset, value) {
   15681             data[offset] = (value >> 9) & 0xFF;
   15682             data[offset + 1] = (value >> 1) & 0xFF;
   15683           };
   15684         }
   15685         var locaData = loca.data;
   15686         // removing the invalid glyphs
   15687         var oldGlyfData = glyf.data;
   15688         var oldGlyfDataLength = oldGlyfData.length;
   15689         var newGlyfData = new Uint8Array(oldGlyfDataLength);
   15690         var startOffset = itemDecode(locaData, 0);
   15691         var writeOffset = 0;
   15692         itemEncode(locaData, 0, writeOffset);
   15693         for (var i = 0, j = itemSize; i < numGlyphs; i++, j += itemSize) {
   15694           var endOffset = itemDecode(locaData, j);
   15695           if (endOffset > oldGlyfDataLength) {
   15696             // glyph end offset points outside glyf data, rejecting the glyph
   15697             itemEncode(locaData, j, writeOffset);
   15698             startOffset = endOffset;
   15699             continue;
   15700           }
   15701 
   15702           var newLength = sanitizeGlyph(oldGlyfData, startOffset, endOffset,
   15703                                         newGlyfData, writeOffset);
   15704           writeOffset += newLength;
   15705           itemEncode(locaData, j, writeOffset);
   15706           startOffset = endOffset;
   15707         }
   15708 
   15709         if (writeOffset == 0) {
   15710           // glyf table cannot be empty -- redoing the glyf and loca tables
   15711           // to have single glyph with one point
   15712           var simpleGlyph = new Uint8Array(
   15713             [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0]);
   15714           for (var i = 0, j = itemSize; i < numGlyphs; i++, j += itemSize)
   15715             itemEncode(locaData, j, simpleGlyph.length);
   15716           glyf.data = simpleGlyph;
   15717           return;
   15718         }
   15719 
   15720         glyf.data = newGlyfData.subarray(0, writeOffset);
   15721       }
   15722 
   15723       function findEmptyGlyphs(locaTable, isGlyphLocationsLong, emptyGlyphIds) {
   15724         var itemSize, itemDecode;
   15725         if (isGlyphLocationsLong) {
   15726           itemSize = 4;
   15727           itemDecode = function fontItemDecodeLong(data, offset) {
   15728             return (data[offset] << 24) | (data[offset + 1] << 16) |
   15729                    (data[offset + 2] << 8) | data[offset + 3];
   15730           };
   15731         } else {
   15732           itemSize = 2;
   15733           itemDecode = function fontItemDecode(data, offset) {
   15734             return (data[offset] << 9) | (data[offset + 1] << 1);
   15735           };
   15736         }
   15737         var data = locaTable.data, length = data.length;
   15738         var lastOffset = itemDecode(data, 0);
   15739         for (var i = itemSize, j = 0; i < length; i += itemSize, j++) {
   15740           var offset = itemDecode(data, i);
   15741           if (offset == lastOffset)
   15742             emptyGlyphIds[j] = true;
   15743           lastOffset = offset;
   15744         }
   15745       }
   15746 
   15747       function readGlyphNameMap(post, properties) {
   15748         var start = (font.start ? font.start : 0) + post.offset;
   15749         font.pos = start;
   15750 
   15751         var length = post.length, end = start + length;
   15752         var version = int32(font.getBytes(4));
   15753         // skip rest to the tables
   15754         font.getBytes(28);
   15755 
   15756         var glyphNames;
   15757         switch (version) {
   15758           case 0x00010000:
   15759             glyphNames = MacStandardGlyphOrdering;
   15760             break;
   15761           case 0x00020000:
   15762             var numGlyphs = int16(font.getBytes(2));
   15763             var glyphNameIndexes = [];
   15764             for (var i = 0; i < numGlyphs; ++i)
   15765               glyphNameIndexes.push(int16(font.getBytes(2)));
   15766             var customNames = [];
   15767             while (font.pos < end) {
   15768               var stringLength = font.getByte();
   15769               var string = '';
   15770               for (var i = 0; i < stringLength; ++i)
   15771                 string += font.getChar();
   15772               customNames.push(string);
   15773             }
   15774             glyphNames = [];
   15775             for (var i = 0; i < numGlyphs; ++i) {
   15776               var j = glyphNameIndexes[i];
   15777               if (j < 258) {
   15778                 glyphNames.push(MacStandardGlyphOrdering[j]);
   15779                 continue;
   15780               }
   15781               glyphNames.push(customNames[j - 258]);
   15782             }
   15783             break;
   15784           case 0x00030000:
   15785             break;
   15786           default:
   15787             warn('Unknown/unsupported post table version ' + version);
   15788             break;
   15789         }
   15790         properties.glyphNames = glyphNames;
   15791       }
   15792 
   15793       function isOS2Valid(os2Table) {
   15794         var data = os2Table.data;
   15795         // usWinAscent == 0 makes font unreadable by windows
   15796         var usWinAscent = (data[74] << 8) | data[75];
   15797         if (usWinAscent == 0)
   15798           return false;
   15799 
   15800         return true;
   15801       }
   15802 
   15803       // Check that required tables are present
   15804       var requiredTables = ['OS/2', 'cmap', 'head', 'hhea',
   15805                              'hmtx', 'maxp', 'name', 'post'];
   15806 
   15807       var header = readOpenTypeHeader(font);
   15808       var numTables = header.numTables;
   15809 
   15810       var cmap, post, maxp, hhea, hmtx, vhea, vmtx, head, loca, glyf, os2;
   15811       var tables = [];
   15812       for (var i = 0; i < numTables; i++) {
   15813         var table = readTableEntry(font);
   15814         var index = requiredTables.indexOf(table.tag);
   15815         if (index != -1) {
   15816           if (table.tag == 'cmap')
   15817             cmap = table;
   15818           else if (table.tag == 'post')
   15819             post = table;
   15820           else if (table.tag == 'maxp')
   15821             maxp = table;
   15822           else if (table.tag == 'hhea')
   15823             hhea = table;
   15824           else if (table.tag == 'hmtx')
   15825             hmtx = table;
   15826           else if (table.tag == 'head')
   15827             head = table;
   15828           else if (table.tag == 'OS/2')
   15829             os2 = table;
   15830 
   15831           requiredTables.splice(index, 1);
   15832         } else {
   15833           if (table.tag == 'vmtx')
   15834             vmtx = table;
   15835           else if (table.tag == 'vhea')
   15836             vhea = table;
   15837           else if (table.tag == 'loca')
   15838             loca = table;
   15839           else if (table.tag == 'glyf')
   15840             glyf = table;
   15841         }
   15842         tables.push(table);
   15843       }
   15844 
   15845       var numTables = tables.length + requiredTables.length;
   15846 
   15847       // header and new offsets. Table entry information is appended to the
   15848       // end of file. The virtualOffset represents where to put the actual
   15849       // data of a particular table;
   15850       var ttf = {
   15851         file: '',
   15852         virtualOffset: numTables * (4 * 4)
   15853       };
   15854 
   15855       // The new numbers of tables will be the last one plus the num
   15856       // of missing tables
   15857       createOpenTypeHeader(header.version, ttf, numTables);
   15858 
   15859       // Invalid OS/2 can break the font for the Windows
   15860       if (os2 && !isOS2Valid(os2)) {
   15861         tables.splice(tables.indexOf(os2), 1);
   15862         os2 = null;
   15863       }
   15864 
   15865       // Ensure the [h/v]mtx tables contains the advance width and
   15866       // sidebearings information for numGlyphs in the maxp table
   15867       font.pos = (font.start || 0) + maxp.offset;
   15868       var version = int16(font.getBytes(4));
   15869       var numGlyphs = int16(font.getBytes(2));
   15870 
   15871       sanitizeMetrics(font, hhea, hmtx, numGlyphs);
   15872       sanitizeMetrics(font, vhea, vmtx, numGlyphs);
   15873 
   15874       var isGlyphLocationsLong = int16([head.data[50], head.data[51]]);
   15875       if (head && loca && glyf) {
   15876         sanitizeGlyphLocations(loca, glyf, numGlyphs, isGlyphLocationsLong);
   15877       }
   15878 
   15879       var emptyGlyphIds = [];
   15880       if (glyf)
   15881         findEmptyGlyphs(loca, isGlyphLocationsLong, emptyGlyphIds);
   15882 
   15883       // Sanitizer reduces the glyph advanceWidth to the maxAdvanceWidth
   15884       // Sometimes it's 0. That needs to be fixed
   15885       if (hhea.data[10] == 0 && hhea.data[11] == 0) {
   15886         hhea.data[10] = 0xFF;
   15887         hhea.data[11] = 0xFF;
   15888       }
   15889 
   15890       // The 'post' table has glyphs names.
   15891       if (post) {
   15892         readGlyphNameMap(post, properties);
   15893       }
   15894 
   15895       var glyphs, ids;
   15896       if (properties.type == 'CIDFontType2') {
   15897         // Replace the old CMAP table with a shiny new one
   15898         // Type2 composite fonts map characters directly to glyphs so the cmap
   15899         // table must be replaced.
   15900         // canvas fillText will reencode some characters even if the font has a
   15901         // glyph at that position - e.g. newline is converted to a space and
   15902         // U+00AD (soft hyphen) is not drawn.
   15903         // So, offset all the glyphs by 0xFF to avoid these cases and use
   15904         // the encoding to map incoming characters to the new glyph positions
   15905         if (!cmap) {
   15906           cmap = {
   15907             tag: 'cmap',
   15908             data: null
   15909           };
   15910           tables.push(cmap);
   15911         }
   15912 
   15913         var cidToGidMap = properties.cidToGidMap || [];
   15914         var gidToCidMap = [0];
   15915         if (cidToGidMap.length > 0) {
   15916           for (var j = cidToGidMap.length - 1; j >= 0; j--) {
   15917             var gid = cidToGidMap[j];
   15918             if (gid)
   15919               gidToCidMap[gid] = j;
   15920           }
   15921           // filling the gaps using CID above the CIDs currently used in font
   15922           var nextCid = cidToGidMap.length;
   15923           for (var i = 1; i < numGlyphs; i++) {
   15924             if (!gidToCidMap[i])
   15925               gidToCidMap[i] = nextCid++;
   15926           }
   15927         }
   15928 
   15929         glyphs = [];
   15930         ids = [];
   15931 
   15932         var usedUnicodes = [];
   15933         var unassignedUnicodeItems = [];
   15934         for (var i = 1; i < numGlyphs; i++) {
   15935           var cid = gidToCidMap[i] || i;
   15936           var unicode = this.toFontChar[cid];
   15937           if (!unicode || typeof unicode !== 'number' ||
   15938               isSpecialUnicode(unicode) || unicode in usedUnicodes) {
   15939             unassignedUnicodeItems.push(i);
   15940             continue;
   15941           }
   15942           usedUnicodes[unicode] = true;
   15943           glyphs.push({ unicode: unicode, code: cid });
   15944           ids.push(i);
   15945         }
   15946         // trying to fit as many unassigned symbols as we can
   15947         // in the range allocated for the user defined symbols
   15948         var unusedUnicode = kCmapGlyphOffset;
   15949         for (var j = 0, jj = unassignedUnicodeItems.length; j < jj; j++) {
   15950           var i = unassignedUnicodeItems[j];
   15951           var cid = gidToCidMap[i] || i;
   15952           while (unusedUnicode in usedUnicodes)
   15953             unusedUnicode++;
   15954           if (unusedUnicode >= kCmapGlyphOffset + kSizeOfGlyphArea)
   15955             break;
   15956           var unicode = unusedUnicode++;
   15957           this.toFontChar[cid] = unicode;
   15958           usedUnicodes[unicode] = true;
   15959           glyphs.push({ unicode: unicode, code: cid });
   15960           ids.push(i);
   15961         }
   15962       } else {
   15963         var cmapTable = readCMapTable(cmap, font);
   15964 
   15965         glyphs = cmapTable.glyphs;
   15966         ids = cmapTable.ids;
   15967 
   15968         var hasShortCmap = !!cmapTable.hasShortCmap;
   15969         var toFontChar = this.toFontChar;
   15970 
   15971         if (hasShortCmap && ids.length == numGlyphs) {
   15972           // Fixes the short cmap tables -- some generators use incorrect
   15973           // glyph id.
   15974           for (var i = 0, ii = ids.length; i < ii; i++)
   15975             ids[i] = i;
   15976         }
   15977 
   15978         var unusedUnicode = kCmapGlyphOffset;
   15979         var glyphNames = properties.glyphNames || [];
   15980         var encoding = properties.baseEncoding;
   15981         var differences = properties.differences;
   15982         if (toFontChar && toFontChar.length > 0) {
   15983           // checking if cmap is just identity map
   15984           var isIdentity = true;
   15985           for (var i = 0, ii = glyphs.length; i < ii; i++) {
   15986             if (glyphs[i].unicode != i + 1) {
   15987               isIdentity = false;
   15988               break;
   15989             }
   15990           }
   15991           // if it is, replacing with meaningful toUnicode values
   15992           if (isIdentity && !this.isSymbolicFont) {
   15993             var usedUnicodes = [], unassignedUnicodeItems = [];
   15994             for (var i = 0, ii = glyphs.length; i < ii; i++) {
   15995               var unicode = toFontChar[i + 1];
   15996               if (!unicode || typeof unicode !== 'number' ||
   15997                   unicode in usedUnicodes) {
   15998                 unassignedUnicodeItems.push(i);
   15999                 continue;
   16000               }
   16001               glyphs[i].unicode = unicode;
   16002               usedUnicodes[unicode] = true;
   16003             }
   16004             for (var j = 0, jj = unassignedUnicodeItems.length; j < jj; j++) {
   16005               var i = unassignedUnicodeItems[j];
   16006               while (unusedUnicode in usedUnicodes)
   16007                 unusedUnicode++;
   16008               var cid = i + 1;
   16009               // override only if unicode mapping is not specified
   16010               if (!(cid in toFontChar))
   16011                 toFontChar[cid] = unusedUnicode;
   16012               glyphs[i].unicode = unusedUnicode++;
   16013             }
   16014             this.useToFontChar = true;
   16015           }
   16016         }
   16017 
   16018         // remove glyph references outside range of avaialable glyphs or empty
   16019         var glyphsRemoved = 0;
   16020         for (var i = ids.length - 1; i >= 0; i--) {
   16021           if (ids[i] < numGlyphs &&
   16022               (!emptyGlyphIds[ids[i]] || this.isSymbolicFont))
   16023             continue;
   16024           ids.splice(i, 1);
   16025           glyphs.splice(i, 1);
   16026           glyphsRemoved++;
   16027         }
   16028 
   16029         // checking if it's a "true" symbolic font
   16030         if (this.isSymbolicFont) {
   16031           var minUnicode = 0xFFFF, maxUnicode = 0;
   16032           for (var i = 0, ii = glyphs.length; i < ii; i++) {
   16033             var unicode = glyphs[i].unicode;
   16034             minUnicode = Math.min(minUnicode, unicode);
   16035             maxUnicode = Math.max(maxUnicode, unicode);
   16036           }
   16037           // high byte must be the same for min and max unicodes
   16038           if ((maxUnicode & 0xFF00) != (minUnicode & 0xFF00))
   16039             this.isSymbolicFont = false;
   16040         }
   16041 
   16042         // heuristics: if removed more than 2 glyphs encoding WinAnsiEncoding
   16043         // does not set properly
   16044         if (glyphsRemoved > 2) {
   16045           warn('Switching TrueType encoding to MacRomanEncoding for ' +
   16046                this.name + ' font');
   16047           encoding = Encodings.MacRomanEncoding;
   16048         }
   16049 
   16050         if (hasShortCmap && this.hasEncoding && !this.isSymbolicFont) {
   16051           // Re-encode short map encoding to unicode -- that simplifies the
   16052           // resolution of MacRoman encoded glyphs logic for TrueType fonts:
   16053           // copying all characters to private use area, all mapping all known
   16054           // glyphs to the unicodes. The glyphs and ids arrays will grow.
   16055           var usedUnicodes = [];
   16056           for (var i = 0, ii = glyphs.length; i < ii; i++) {
   16057             var code = glyphs[i].unicode;
   16058             var gid = ids[i];
   16059             glyphs[i].unicode += kCmapGlyphOffset;
   16060             toFontChar[code] = glyphs[i].unicode;
   16061 
   16062             var glyphName = glyphNames[gid] || encoding[code];
   16063             if (glyphName in GlyphsUnicode) {
   16064               var unicode = GlyphsUnicode[glyphName];
   16065               if (unicode in usedUnicodes)
   16066                 continue;
   16067 
   16068               usedUnicodes[unicode] = true;
   16069               glyphs.push({
   16070                 unicode: unicode,
   16071                 code: glyphs[i].code
   16072               });
   16073               ids.push(gid);
   16074               toFontChar[code] = unicode;
   16075             }
   16076           }
   16077           this.useToFontChar = true;
   16078         } else if (!this.isSymbolicFont && (this.hasEncoding ||
   16079                     properties.glyphNames || differences.length > 0)) {
   16080           // Re-encode cmap encoding to unicode, based on the 'post' table data
   16081           // diffrence array or base encoding
   16082           var reverseMap = [];
   16083           for (var i = 0, ii = glyphs.length; i < ii; i++)
   16084             reverseMap[glyphs[i].unicode] = i;
   16085 
   16086           var newGlyphUnicodes = [];
   16087           for (var i = 0, ii = glyphs.length; i < ii; i++) {
   16088             var code = glyphs[i].unicode;
   16089             var changeCode = false;
   16090             var gid = ids[i];
   16091 
   16092             var glyphName = glyphNames[gid];
   16093             if (!glyphName) {
   16094               glyphName = differences[code] || encoding[code];
   16095               changeCode = true;
   16096             }
   16097             if (glyphName in GlyphsUnicode) {
   16098               var unicode = GlyphsUnicode[glyphName];
   16099               if (!unicode || reverseMap[unicode] === i)
   16100                 continue; // unknown glyph name or in its own place
   16101 
   16102               newGlyphUnicodes[i] = unicode;
   16103               if (changeCode)
   16104                 toFontChar[code] = unicode;
   16105               delete reverseMap[code];
   16106             }
   16107           }
   16108           for (var index in newGlyphUnicodes) {
   16109             var unicode = newGlyphUnicodes[index];
   16110             if (reverseMap[unicode]) {
   16111               // avoiding assigning to the same unicode
   16112               glyphs[index].unicode = unusedUnicode++;
   16113               continue;
   16114             }
   16115             glyphs[index].unicode = unicode;
   16116             reverseMap[unicode] = index;
   16117           }
   16118           this.useToFontChar = true;
   16119         }
   16120 
   16121         // Moving all symbolic font glyphs into 0xF000 - 0xF0FF range.
   16122         if (this.isSymbolicFont) {
   16123           for (var i = 0, ii = glyphs.length; i < ii; i++) {
   16124             var code = glyphs[i].unicode & 0xFF;
   16125             var fontCharCode = kSymbolicFontGlyphOffset | code;
   16126             glyphs[i].unicode = toFontChar[code] = fontCharCode;
   16127           }
   16128           this.useToFontChar = true;
   16129         }
   16130 
   16131         createGlyphNameMap(glyphs, ids, properties);
   16132         this.glyphNameMap = properties.glyphNameMap;
   16133       }
   16134 
   16135       // Converting glyphs and ids into font's cmap table
   16136       cmap.data = createCMapTable(glyphs, ids);
   16137       var unicodeIsEnabled = [];
   16138       for (var i = 0, ii = glyphs.length; i < ii; i++) {
   16139         unicodeIsEnabled[glyphs[i].unicode] = true;
   16140       }
   16141       this.unicodeIsEnabled = unicodeIsEnabled;
   16142 
   16143       if (!os2) {
   16144         // extract some more font properties from the OpenType head and
   16145         // hhea tables; yMin and descent value are always negative
   16146         var override = {
   16147           unitsPerEm: int16([head.data[18], head.data[19]]),
   16148           yMax: int16([head.data[42], head.data[43]]),
   16149           yMin: int16([head.data[38], head.data[39]]) - 0x10000,
   16150           ascent: int16([hhea.data[4], hhea.data[5]]),
   16151           descent: int16([hhea.data[6], hhea.data[7]]) - 0x10000
   16152         };
   16153 
   16154         tables.push({
   16155           tag: 'OS/2',
   16156           data: stringToArray(createOS2Table(properties, glyphs, override))
   16157         });
   16158       }
   16159 
   16160       // Rewrite the 'post' table if needed
   16161       if (requiredTables.indexOf('post') != -1) {
   16162         tables.push({
   16163           tag: 'post',
   16164           data: stringToArray(createPostTable(properties))
   16165         });
   16166       }
   16167 
   16168       // Rewrite the 'name' table if needed
   16169       if (requiredTables.indexOf('name') != -1) {
   16170         tables.push({
   16171           tag: 'name',
   16172           data: stringToArray(createNameTable(this.name))
   16173         });
   16174       }
   16175 
   16176       // Tables needs to be written by ascendant alphabetic order
   16177       tables.sort(function tables_sort(a, b) {
   16178         return (a.tag > b.tag) - (a.tag < b.tag);
   16179       });
   16180 
   16181       // rewrite the tables but tweak offsets
   16182       for (var i = 0, ii = tables.length; i < ii; i++) {
   16183         var table = tables[i];
   16184         var data = [];
   16185 
   16186         var tableData = table.data;
   16187         for (var j = 0, jj = tableData.length; j < jj; j++)
   16188           data.push(tableData[j]);
   16189         createTableEntry(ttf, table.tag, data);
   16190       }
   16191 
   16192       // Add the table datas
   16193       for (var i = 0, ii = tables.length; i < ii; i++) {
   16194         var table = tables[i];
   16195         var tableData = table.data;
   16196         ttf.file += arrayToString(tableData);
   16197 
   16198         // 4-byte aligned data
   16199         while (ttf.file.length & 3)
   16200           ttf.file += String.fromCharCode(0);
   16201       }
   16202 
   16203       return stringToArray(ttf.file);
   16204     },
   16205 
   16206     convert: function Font_convert(fontName, font, properties) {
   16207       function isFixedPitch(glyphs) {
   16208         for (var i = 0, ii = glyphs.length - 1; i < ii; i++) {
   16209           if (glyphs[i] != glyphs[i + 1])
   16210             return false;
   16211         }
   16212         return true;
   16213       }
   16214 
   16215       // The offsets object holds at the same time a representation of where
   16216       // to write the table entry information about a table and another offset
   16217       // representing the offset where to draw the actual data of a particular
   16218       // table
   16219       var kRequiredTablesCount = 9;
   16220 
   16221       var otf = {
   16222         file: '',
   16223         virtualOffset: 9 * (4 * 4)
   16224       };
   16225 
   16226       createOpenTypeHeader('\x4F\x54\x54\x4F', otf, 9);
   16227 
   16228       var charstrings = font.charstrings;
   16229       properties.fixedPitch = isFixedPitch(charstrings);
   16230 
   16231       var glyphNameMap = {};
   16232       for (var i = 0; i < charstrings.length; ++i) {
   16233         var charstring = charstrings[i];
   16234         glyphNameMap[charstring.glyph] = charstring.unicode;
   16235       }
   16236       this.glyphNameMap = glyphNameMap;
   16237 
   16238       if (!properties.hasEncoding && (properties.subtype == 'Type1C' ||
   16239           properties.subtype == 'CIDFontType0C')) {
   16240         var encoding = [];
   16241         for (var i = 0; i < charstrings.length; ++i) {
   16242           var charstring = charstrings[i];
   16243           encoding[charstring.code] = charstring.glyph;
   16244         }
   16245         properties.baseEncoding = encoding;
   16246       }
   16247       if (properties.subtype == 'CIDFontType0C') {
   16248         var toFontChar = [];
   16249         for (var i = 0; i < charstrings.length; ++i) {
   16250           var charstring = charstrings[i];
   16251           toFontChar[charstring.code] = charstring.unicode;
   16252         }
   16253         this.toFontChar = toFontChar;
   16254       }
   16255 
   16256       var fields = {
   16257         // PostScript Font Program
   16258         'CFF ': font.data,
   16259 
   16260         // OS/2 and Windows Specific metrics
   16261         'OS/2': stringToArray(createOS2Table(properties, charstrings)),
   16262 
   16263         // Character to glyphs mapping
   16264         'cmap': createCMapTable(charstrings.slice(),
   16265                                 ('glyphIds' in font) ? font.glyphIds : null),
   16266 
   16267         // Font header
   16268         'head': (function fontFieldsHead() {
   16269           return stringToArray(
   16270               '\x00\x01\x00\x00' + // Version number
   16271               '\x00\x00\x10\x00' + // fontRevision
   16272               '\x00\x00\x00\x00' + // checksumAdjustement
   16273               '\x5F\x0F\x3C\xF5' + // magicNumber
   16274               '\x00\x00' + // Flags
   16275               '\x03\xE8' + // unitsPerEM (defaulting to 1000)
   16276               '\x00\x00\x00\x00\x9e\x0b\x7e\x27' + // creation date
   16277               '\x00\x00\x00\x00\x9e\x0b\x7e\x27' + // modifification date
   16278               '\x00\x00' + // xMin
   16279               safeString16(properties.descent) + // yMin
   16280               '\x0F\xFF' + // xMax
   16281               safeString16(properties.ascent) + // yMax
   16282               string16(properties.italicAngle ? 2 : 0) + // macStyle
   16283               '\x00\x11' + // lowestRecPPEM
   16284               '\x00\x00' + // fontDirectionHint
   16285               '\x00\x00' + // indexToLocFormat
   16286               '\x00\x00');  // glyphDataFormat
   16287         })(),
   16288 
   16289         // Horizontal header
   16290         'hhea': (function fontFieldsHhea() {
   16291           return stringToArray(
   16292               '\x00\x01\x00\x00' + // Version number
   16293               safeString16(properties.ascent) + // Typographic Ascent
   16294               safeString16(properties.descent) + // Typographic Descent
   16295               '\x00\x00' + // Line Gap
   16296               '\xFF\xFF' + // advanceWidthMax
   16297               '\x00\x00' + // minLeftSidebearing
   16298               '\x00\x00' + // minRightSidebearing
   16299               '\x00\x00' + // xMaxExtent
   16300               safeString16(properties.capHeight) + // caretSlopeRise
   16301               safeString16(Math.tan(properties.italicAngle) *
   16302                        properties.xHeight) + // caretSlopeRun
   16303               '\x00\x00' + // caretOffset
   16304               '\x00\x00' + // -reserved-
   16305               '\x00\x00' + // -reserved-
   16306               '\x00\x00' + // -reserved-
   16307               '\x00\x00' + // -reserved-
   16308               '\x00\x00' + // metricDataFormat
   16309               string16(charstrings.length + 1)); // Number of HMetrics
   16310         })(),
   16311 
   16312         // Horizontal metrics
   16313         'hmtx': (function fontFieldsHmtx() {
   16314           var hmtx = '\x00\x00\x00\x00'; // Fake .notdef
   16315           for (var i = 0, ii = charstrings.length; i < ii; i++) {
   16316             var charstring = charstrings[i];
   16317             var width = 'width' in charstring ? charstring.width : 0;
   16318             hmtx += string16(width) + string16(0);
   16319           }
   16320           return stringToArray(hmtx);
   16321         })(),
   16322 
   16323         // Maximum profile
   16324         'maxp': (function fontFieldsMaxp() {
   16325           return stringToArray(
   16326               '\x00\x00\x50\x00' + // Version number
   16327              string16(charstrings.length + 1)); // Num of glyphs
   16328         })(),
   16329 
   16330         // Naming tables
   16331         'name': stringToArray(createNameTable(fontName)),
   16332 
   16333         // PostScript informations
   16334         'post': stringToArray(createPostTable(properties))
   16335       };
   16336 
   16337       for (var field in fields)
   16338         createTableEntry(otf, field, fields[field]);
   16339 
   16340       for (var field in fields) {
   16341         var table = fields[field];
   16342         otf.file += arrayToString(table);
   16343       }
   16344 
   16345       return stringToArray(otf.file);
   16346     },
   16347 
   16348     buildToFontChar: function Font_buildToFontChar(toUnicode) {
   16349       var result = [];
   16350       var unusedUnicode = kCmapGlyphOffset;
   16351       for (var i = 0, ii = toUnicode.length; i < ii; i++) {
   16352         var unicode = toUnicode[i];
   16353         var fontCharCode = typeof unicode === 'object' ? unusedUnicode++ :
   16354           unicode;
   16355         if (typeof unicode !== 'undefined')
   16356           result[i] = fontCharCode;
   16357       }
   16358       return result;
   16359     },
   16360 
   16361     rebuildToUnicode: function Font_rebuildToUnicode(properties) {
   16362       var firstChar = properties.firstChar, lastChar = properties.lastChar;
   16363       var map = [];
   16364       if (properties.composite) {
   16365         var isIdentityMap = this.cidToUnicode.length == 0;
   16366         for (var i = firstChar, ii = lastChar; i <= ii; i++) {
   16367           // TODO missing map the character according font's CMap
   16368           var cid = i;
   16369           map[i] = isIdentityMap ? cid : this.cidToUnicode[cid];
   16370         }
   16371       } else {
   16372         for (var i = firstChar, ii = lastChar; i <= ii; i++) {
   16373           var glyph = properties.differences[i];
   16374           if (!glyph)
   16375             glyph = properties.baseEncoding[i];
   16376           if (!!glyph && (glyph in GlyphsUnicode))
   16377             map[i] = GlyphsUnicode[glyph];
   16378         }
   16379       }
   16380       this.toUnicode = map;
   16381     },
   16382 
   16383     loadCidToUnicode: function Font_loadCidToUnicode(properties) {
   16384       if (!properties.cidSystemInfo)
   16385         return;
   16386 
   16387       var cidToUnicodeMap = [], unicodeToCIDMap = [];
   16388       this.cidToUnicode = cidToUnicodeMap;
   16389       this.unicodeToCID = unicodeToCIDMap;
   16390 
   16391       var cidSystemInfo = properties.cidSystemInfo;
   16392       var cidToUnicode;
   16393       if (cidSystemInfo) {
   16394         cidToUnicode = CIDToUnicodeMaps[
   16395           cidSystemInfo.registry + '-' + cidSystemInfo.ordering];
   16396       }
   16397 
   16398       if (!cidToUnicode)
   16399         return; // identity encoding
   16400 
   16401       var cid = 1, i, j, k, ii;
   16402       for (i = 0, ii = cidToUnicode.length; i < ii; ++i) {
   16403         var unicode = cidToUnicode[i];
   16404         if (isArray(unicode)) {
   16405           var length = unicode.length;
   16406           for (j = 0; j < length; j++) {
   16407             cidToUnicodeMap[cid] = unicode[j];
   16408             unicodeToCIDMap[unicode[j]] = cid;
   16409           }
   16410           cid++;
   16411         } else if (typeof unicode === 'object') {
   16412           var fillLength = unicode.f;
   16413           if (fillLength) {
   16414             k = unicode.c;
   16415             for (j = 0; j < fillLength; ++j) {
   16416               cidToUnicodeMap[cid] = k;
   16417               unicodeToCIDMap[k] = cid;
   16418               cid++;
   16419               k++;
   16420             }
   16421           } else
   16422             cid += unicode.s;
   16423         } else if (unicode) {
   16424           cidToUnicodeMap[cid] = unicode;
   16425           unicodeToCIDMap[unicode] = cid;
   16426           cid++;
   16427         } else
   16428           cid++;
   16429       }
   16430     },
   16431 
   16432     bindDOM: function Font_bindDOM(data) {
   16433       var fontName = this.loadedName;
   16434 
   16435       // Add the font-face rule to the document
   16436       var url = ('url(data:' + this.mimetype + ';base64,' +
   16437                  PdfJS_window.window.btoa(data) + ');');
   16438       var rule = "@font-face { font-family:'" + fontName + "';src:" + url + '}';
   16439 
   16440       var styleElement = PdfJS_window.document.createElement('style');
   16441       PdfJS_window.document.documentElement.getElementsByTagName('head')[0].appendChild(
   16442         styleElement);
   16443 
   16444       var styleSheet = styleElement.sheet;
   16445       styleSheet.insertRule(rule, styleSheet.cssRules.length);
   16446 
   16447       if (PDFJS.pdfBug && FontInspector.enabled)
   16448         FontInspector.fontAdded(this, url);
   16449 
   16450       return rule;
   16451     },
   16452 
   16453     get spaceWidth() {
   16454       // trying to estimate space character width
   16455       var possibleSpaceReplacements = ['space', 'minus', 'one', 'i'];
   16456       var width;
   16457       for (var i = 0, ii = possibleSpaceReplacements.length; i < ii; i++) {
   16458         var glyphName = possibleSpaceReplacements[i];
   16459         // if possible, getting width by glyph name
   16460         if (glyphName in this.widths) {
   16461           width = this.widths[glyphName];
   16462           break;
   16463         }
   16464         var glyphUnicode = GlyphsUnicode[glyphName];
   16465         // finding the charcode via unicodeToCID map
   16466         var charcode = 0;
   16467         if (this.composite)
   16468           charcode = this.unicodeToCID[glyphUnicode];
   16469         // ... via toUnicode map
   16470         if (!charcode && 'toUnicode' in this)
   16471           charcode = this.toUnicode.indexOf(glyphUnicode);
   16472         // setting it to unicode if negative or undefined
   16473         if (!(charcode > 0))
   16474           charcode = glyphUnicode;
   16475         // trying to get width via charcode
   16476         width = this.widths[charcode];
   16477         if (width)
   16478           break; // the non-zero width found
   16479       }
   16480       width = (width || this.defaultWidth) * this.widthMultiplier;
   16481       return shadow(this, 'spaceWidth', width);
   16482     },
   16483 
   16484     charToGlyph: function Font_charToGlyph(charcode) {
   16485       var fontCharCode, width, operatorList, disabled;
   16486 
   16487       var width = this.widths[charcode];
   16488 
   16489       switch (this.type) {
   16490         case 'CIDFontType0':
   16491           if (this.noUnicodeAdaptation) {
   16492             width = this.widths[this.unicodeToCID[charcode] || charcode];
   16493             fontCharCode = mapPrivateUseChars(charcode);
   16494             break;
   16495           }
   16496           fontCharCode = this.toFontChar[charcode] || charcode;
   16497           break;
   16498         case 'CIDFontType2':
   16499           if (this.noUnicodeAdaptation) {
   16500             width = this.widths[this.unicodeToCID[charcode] || charcode];
   16501             fontCharCode = mapPrivateUseChars(charcode);
   16502             break;
   16503           }
   16504           fontCharCode = this.toFontChar[charcode] || charcode;
   16505           break;
   16506         case 'Type1':
   16507           var glyphName = this.differences[charcode] || this.encoding[charcode];
   16508           if (!isNum(width))
   16509             width = this.widths[glyphName];
   16510           if (this.noUnicodeAdaptation) {
   16511             fontCharCode = mapPrivateUseChars(GlyphsUnicode[glyphName] ||
   16512               charcode);
   16513             break;
   16514           }
   16515           fontCharCode = this.glyphNameMap[glyphName] ||
   16516             GlyphsUnicode[glyphName] || charcode;
   16517           break;
   16518         case 'Type3':
   16519           var glyphName = this.differences[charcode] || this.encoding[charcode];
   16520           operatorList = this.charProcOperatorList[glyphName];
   16521           fontCharCode = charcode;
   16522           break;
   16523         case 'TrueType':
   16524           if (this.useToFontChar) {
   16525             fontCharCode = this.toFontChar[charcode] || charcode;
   16526             break;
   16527           }
   16528           var glyphName = this.differences[charcode] || this.encoding[charcode];
   16529           if (!glyphName)
   16530             glyphName = Encodings.StandardEncoding[charcode];
   16531           if (!isNum(width))
   16532             width = this.widths[glyphName];
   16533           if (this.noUnicodeAdaptation) {
   16534             fontCharCode = GlyphsUnicode[glyphName] || charcode;
   16535             break;
   16536           }
   16537           if (!this.hasEncoding || this.isSymbolicFont) {
   16538             fontCharCode = this.useToFontChar ? this.toFontChar[charcode] :
   16539               charcode;
   16540             break;
   16541           }
   16542 
   16543           // MacRoman encoding address by re-encoding the cmap table
   16544           fontCharCode = glyphName in this.glyphNameMap ?
   16545             this.glyphNameMap[glyphName] : GlyphsUnicode[glyphName];
   16546           break;
   16547         default:
   16548           warn('Unsupported font type: ' + this.type);
   16549           break;
   16550       }
   16551 
   16552       var unicodeChars = !('toUnicode' in this) ? charcode :
   16553         this.toUnicode[charcode] || charcode;
   16554       if (typeof unicodeChars === 'number')
   16555         unicodeChars = String.fromCharCode(unicodeChars);
   16556 
   16557       width = (isNum(width) ? width : this.defaultWidth) * this.widthMultiplier;
   16558       disabled = this.unicodeIsEnabled ?
   16559         !this.unicodeIsEnabled[fontCharCode] : false;
   16560 
   16561       return {
   16562         fontChar: String.fromCharCode(fontCharCode),
   16563         unicode: unicodeChars,
   16564         width: width,
   16565         disabled: disabled,
   16566         operatorList: operatorList
   16567       };
   16568     },
   16569 
   16570     charsToGlyphs: function Font_charsToGlyphs(chars) {
   16571       var charsCache = this.charsCache;
   16572       var glyphs;
   16573 
   16574       // if we translated this string before, just grab it from the cache
   16575       if (charsCache) {
   16576         glyphs = charsCache[chars];
   16577         if (glyphs)
   16578           return glyphs;
   16579       }
   16580 
   16581       // lazily create the translation cache
   16582       if (!charsCache)
   16583         charsCache = this.charsCache = Object.create(null);
   16584 
   16585       glyphs = [];
   16586 
   16587       if (this.wideChars) {
   16588         // composite fonts have multi-byte strings convert the string from
   16589         // single-byte to multi-byte
   16590         // XXX assuming CIDFonts are two-byte - later need to extract the
   16591         // correct byte encoding according to the PDF spec
   16592         var length = chars.length - 1; // looping over two bytes at a time so
   16593                                        // loop should never end on the last byte
   16594         for (var i = 0; i < length; i++) {
   16595           var charcode = int16([chars.charCodeAt(i++), chars.charCodeAt(i)]);
   16596           var glyph = this.charToGlyph(charcode);
   16597           glyphs.push(glyph);
   16598           // placing null after each word break charcode (ASCII SPACE)
   16599           if (charcode == 0x20)
   16600             glyphs.push(null);
   16601         }
   16602       }
   16603       else {
   16604         for (var i = 0, ii = chars.length; i < ii; ++i) {
   16605           var charcode = chars.charCodeAt(i);
   16606           var glyph = this.charToGlyph(charcode);
   16607           glyphs.push(glyph);
   16608           if (charcode == 0x20)
   16609             glyphs.push(null);
   16610         }
   16611       }
   16612 
   16613       // Enter the translated string into the cache
   16614       return (charsCache[chars] = glyphs);
   16615     }
   16616   };
   16617 
   16618   return Font;
   16619 })();
   16620 
   16621 /*
   16622  * Type1Parser encapsulate the needed code for parsing a Type1 font
   16623  * program. Some of its logic depends on the Type2 charstrings
   16624  * structure.
   16625  */
   16626 var Type1Parser = function type1Parser() {
   16627   /*
   16628    * Decrypt a Sequence of Ciphertext Bytes to Produce the Original Sequence
   16629    * of Plaintext Bytes. The function took a key as a parameter which can be
   16630    * for decrypting the eexec block of for decoding charStrings.
   16631    */
   16632   var kEexecEncryptionKey = 55665;
   16633   var kCharStringsEncryptionKey = 4330;
   16634 
   16635   function decrypt(stream, key, discardNumber) {
   16636     var r = key, c1 = 52845, c2 = 22719;
   16637     var decryptedString = [];
   16638 
   16639     var value = '';
   16640     var count = stream.length;
   16641     for (var i = 0; i < count; i++) {
   16642       value = stream[i];
   16643       decryptedString[i] = value ^ (r >> 8);
   16644       r = ((value + r) * c1 + c2) & ((1 << 16) - 1);
   16645     }
   16646     return decryptedString.slice(discardNumber);
   16647   }
   16648 
   16649   /*
   16650    * CharStrings are encoded following the the CharString Encoding sequence
   16651    * describe in Chapter 6 of the "Adobe Type1 Font Format" specification.
   16652    * The value in a byte indicates a command, a number, or subsequent bytes
   16653    * that are to be interpreted in a special way.
   16654    *
   16655    * CharString Number Encoding:
   16656    *  A CharString byte containing the values from 32 through 255 inclusive
   16657    *  indicate an integer. These values are decoded in four ranges.
   16658    *
   16659    * 1. A CharString byte containing a value, v, between 32 and 246 inclusive,
   16660    * indicate the integer v - 139. Thus, the integer values from -107 through
   16661    * 107 inclusive may be encoded in single byte.
   16662    *
   16663    * 2. A CharString byte containing a value, v, between 247 and 250 inclusive,
   16664    * indicates an integer involving the next byte, w, according to the formula:
   16665    * [(v - 247) x 256] + w + 108
   16666    *
   16667    * 3. A CharString byte containing a value, v, between 251 and 254 inclusive,
   16668    * indicates an integer involving the next byte, w, according to the formula:
   16669    * -[(v - 251) * 256] - w - 108
   16670    *
   16671    * 4. A CharString containing the value 255 indicates that the next 4 bytes
   16672    * are a two complement signed integer. The first of these bytes contains the
   16673    * highest order bits, the second byte contains the next higher order bits
   16674    * and the fourth byte contain the lowest order bits.
   16675    *
   16676    *
   16677    * CharString Command Encoding:
   16678    *  CharStrings commands are encoded in 1 or 2 bytes.
   16679    *
   16680    *  Single byte commands are encoded in 1 byte that contains a value between
   16681    *  0 and 31 inclusive.
   16682    *  If a command byte contains the value 12, then the value in the next byte
   16683    *  indicates a command. This "escape" mechanism allows many extra commands
   16684    * to be encoded and this encoding technique helps to minimize the length of
   16685    * the charStrings.
   16686    */
   16687   var charStringDictionary = {
   16688     '1': 'hstem',
   16689     '3': 'vstem',
   16690     '4': 'vmoveto',
   16691     '5': 'rlineto',
   16692     '6': 'hlineto',
   16693     '7': 'vlineto',
   16694     '8': 'rrcurveto',
   16695 
   16696     // closepath is a Type1 command that do not take argument and is useless
   16697     // in Type2 and it can simply be ignored.
   16698     '9': null, // closepath
   16699 
   16700     '10': 'callsubr',
   16701 
   16702     // return is normally used inside sub-routines to tells to the execution
   16703     // flow that it can be back to normal.
   16704     // During the translation process Type1 charstrings will be flattened and
   16705     // sub-routines will be embedded directly into the charstring directly, so
   16706     // this can be ignored safely.
   16707     '11': 'return',
   16708 
   16709     '12': {
   16710       // dotsection is a Type1 command to specify some hinting feature for dots
   16711       // that do not take a parameter and it can safely be ignored for Type2.
   16712       '0': null, // dotsection
   16713 
   16714       // [vh]stem3 are Type1 only and Type2 supports [vh]stem with multiple
   16715       // parameters, so instead of returning [vh]stem3 take a shortcut and
   16716       // return [vhstem] instead.
   16717       '1': 'vstem',
   16718       '2': 'hstem',
   16719 
   16720       // Type1 only command with command not (yet) built-in ,throw an error
   16721       '6': -1, // seac
   16722       '7': -1, // sbw
   16723 
   16724       '11': 'sub',
   16725       '12': 'div',
   16726 
   16727       // callothersubr is a mechanism to make calls on the postscript
   16728       // interpreter, this is not supported by Type2 charstring but hopefully
   16729       // most of the default commands can be ignored safely.
   16730       '16': 'callothersubr',
   16731 
   16732       '17': 'pop',
   16733 
   16734       // setcurrentpoint sets the current point to x, y without performing a
   16735       // moveto (this is a one shot positionning command). This is used only
   16736       // with the return of an OtherSubrs call.
   16737       // TODO Implement the OtherSubrs charstring embedding and replace this
   16738       // call by a no-op, like 2 'pop' commands for example.
   16739       '33': null // setcurrentpoint
   16740     },
   16741     '13': 'hsbw',
   16742     '14': 'endchar',
   16743     '21': 'rmoveto',
   16744     '22': 'hmoveto',
   16745     '30': 'vhcurveto',
   16746     '31': 'hvcurveto'
   16747   };
   16748 
   16749   var kEscapeCommand = 12;
   16750 
   16751   function decodeCharString(array) {
   16752     var charstring = [];
   16753     var lsb = 0;
   16754     var width = 0;
   16755     var flexState = 0;
   16756 
   16757     var value = '';
   16758     var count = array.length;
   16759     for (var i = 0; i < count; i++) {
   16760       value = array[i];
   16761 
   16762       if (value < 32) {
   16763         var command = null;
   16764         if (value == kEscapeCommand) {
   16765           var escape = array[++i];
   16766 
   16767           // TODO Clean this code
   16768           if (escape == 16) {
   16769             var index = charstring.pop();
   16770             var argc = charstring.pop();
   16771             for (var j = 0; j < argc; j++)
   16772               charstring.push('drop');
   16773 
   16774             // If the flex mechanism is not used in a font program, Adobe
   16775             // states that entries 0, 1 and 2 can simply be replaced by
   16776             // {}, which means that we can simply ignore them.
   16777             if (index < 3) {
   16778               continue;
   16779             }
   16780 
   16781             // This is the same things about hint replacement, if it is not used
   16782             // entry 3 can be replaced by {3}
   16783             // TODO support hint replacment
   16784             if (index == 3) {
   16785               charstring.push(3);
   16786               i++;
   16787               continue;
   16788             }
   16789           } else if (escape == 17 || escape == 33) {
   16790             // pop or setcurrentpoint commands can be ignored
   16791             // since we are not doing callothersubr
   16792             continue;
   16793           } else if (!kHintingEnabled && (escape == 1 || escape == 2)) {
   16794             charstring.push('drop', 'drop', 'drop', 'drop', 'drop', 'drop');
   16795             continue;
   16796           }
   16797 
   16798           command = charStringDictionary['12'][escape];
   16799         } else {
   16800           // TODO Clean this code
   16801           if (value == 13) { // hsbw
   16802             if (charstring.length == 2) {
   16803               lsb = charstring[0];
   16804               width = charstring[1];
   16805               charstring.splice(0, 1);
   16806             } else if (charstring.length == 4 && charstring[3] == 'div') {
   16807               lsb = charstring[0];
   16808               width = charstring[1] / charstring[2];
   16809               charstring.splice(0, 1);
   16810             } else if (charstring.length == 4 && charstring[2] == 'div') {
   16811               lsb = charstring[0] / charstring[1];
   16812               width = charstring[3];
   16813               charstring.splice(0, 3);
   16814             } else {
   16815               error('Unsupported hsbw format: ' + charstring);
   16816             }
   16817 
   16818             charstring.push(lsb, 'hmoveto');
   16819             continue;
   16820           } else if (value == 10) { // callsubr
   16821             if (charstring[charstring.length - 1] < 3) { // subr #0..2
   16822               var subrNumber = charstring.pop();
   16823               switch (subrNumber) {
   16824                 case 1:
   16825                   flexState = 1; // prepare for flex coordinates
   16826                   break;
   16827                 case 2:
   16828                   flexState = 2; // flex in progress
   16829                   break;
   16830                 case 0:
   16831                   // type2 flex command does not need final coords
   16832                   charstring.push('exch', 'drop', 'exch', 'drop');
   16833                   charstring.push('flex');
   16834                   flexState = 0;
   16835                   break;
   16836               }
   16837               continue;
   16838             }
   16839           } else if (value == 21 && flexState > 0) {
   16840             if (flexState > 1)
   16841               continue; // ignoring rmoveto
   16842             value = 5; // first segment replacing with rlineto
   16843           } else if (!kHintingEnabled && (value == 1 || value == 3)) {
   16844             charstring.push('drop', 'drop');
   16845             continue;
   16846           }
   16847           command = charStringDictionary[value];
   16848         }
   16849 
   16850         // Some charstring commands are meaningless in Type2 and will return
   16851         // a null, let's just ignored them
   16852         if (!command && i < count) {
   16853           continue;
   16854         } else if (!command) {
   16855           break;
   16856         } else if (command == -1) {
   16857           warn('Support for Type1 command ' + value +
   16858                 ' (' + escape + ') is not implemented in charstring: ' +
   16859                 charstring);
   16860           if (value == 12) {
   16861             // we know how to ignore only some the Type1 commands
   16862             switch (escape) {
   16863               case 7:
   16864                 charstring.push('drop', 'drop', 'drop', 'drop');
   16865                 continue;
   16866               case 8:
   16867                 charstring.push('drop');
   16868                 continue;
   16869             }
   16870           }
   16871         }
   16872 
   16873         value = command;
   16874       } else if (value <= 246) {
   16875         value = value - 139;
   16876       } else if (value <= 250) {
   16877         value = ((value - 247) * 256) + array[++i] + 108;
   16878       } else if (value <= 254) {
   16879         value = -((value - 251) * 256) - array[++i] - 108;
   16880       } else {
   16881         value = (array[++i] & 0xff) << 24 | (array[++i] & 0xff) << 16 |
   16882                 (array[++i] & 0xff) << 8 | (array[++i] & 0xff) << 0;
   16883       }
   16884 
   16885       charstring.push(value);
   16886     }
   16887 
   16888     return { charstring: charstring, width: width, lsb: lsb };
   16889   }
   16890 
   16891   /*
   16892    * Returns an object containing a Subrs array and a CharStrings
   16893    * array extracted from and eexec encrypted block of data
   16894    */
   16895   function readNumberArray(str, index) {
   16896     var start = index;
   16897     while (str[index++] != '[')
   16898       start++;
   16899     start++;
   16900 
   16901     var count = 0;
   16902     while (str[index++] != ']')
   16903       count++;
   16904 
   16905     str = str.substr(start, count);
   16906 
   16907     str = str.trim();
   16908     // Remove adjacent spaces
   16909     str = str.replace(/\s+/g, ' ');
   16910 
   16911     var array = str.split(' ');
   16912     for (var i = 0, ii = array.length; i < ii; i++)
   16913       array[i] = parseFloat(array[i] || 0);
   16914     return array;
   16915   }
   16916 
   16917   function readNumber(str, index) {
   16918     while (str[index] == ' ')
   16919       index++;
   16920 
   16921     var start = index;
   16922 
   16923     var count = 0;
   16924     while (str[index++] != ' ')
   16925       count++;
   16926 
   16927     return parseFloat(str.substr(start, count) || 0);
   16928   }
   16929 
   16930   function isSeparator(c) {
   16931     return c == ' ' || c == '\n' || c == '\x0d';
   16932   }
   16933 
   16934   this.extractFontProgram = function Type1Parser_extractFontProgram(stream) {
   16935     var eexec = decrypt(stream, kEexecEncryptionKey, 4);
   16936     var eexecStr = '';
   16937     for (var i = 0, ii = eexec.length; i < ii; i++)
   16938       eexecStr += String.fromCharCode(eexec[i]);
   16939 
   16940     var glyphsSection = false, subrsSection = false;
   16941     var program = {
   16942       subrs: [],
   16943       charstrings: [],
   16944       properties: {
   16945         'privateData': {
   16946           'lenIV': 4
   16947         }
   16948       }
   16949     };
   16950 
   16951     var glyph = '';
   16952     var token = '';
   16953     var length = 0;
   16954 
   16955     var c = '';
   16956     var count = eexecStr.length;
   16957     for (var i = 0; i < count; i++) {
   16958       var getToken = function getToken() {
   16959         while (i < count && isSeparator(eexecStr[i]))
   16960           ++i;
   16961 
   16962         var token = '';
   16963         while (i < count && !isSeparator(eexecStr[i]))
   16964           token += eexecStr[i++];
   16965 
   16966         return token;
   16967       };
   16968       var c = eexecStr[i];
   16969 
   16970       if ((glyphsSection || subrsSection) &&
   16971           (token == 'RD' || token == '-|')) {
   16972         i++;
   16973         var data = eexec.slice(i, i + length);
   16974         var lenIV = program.properties.privateData['lenIV'];
   16975         var encoded = decrypt(data, kCharStringsEncryptionKey, lenIV);
   16976         var str = decodeCharString(encoded);
   16977 
   16978         if (glyphsSection) {
   16979           program.charstrings.push({
   16980             glyph: glyph,
   16981             data: str.charstring,
   16982             lsb: str.lsb,
   16983             width: str.width
   16984           });
   16985         } else {
   16986           program.subrs.push(str.charstring);
   16987         }
   16988         i += length;
   16989         token = '';
   16990       } else if (isSeparator(c)) {
   16991         length = parseInt(token, 10);
   16992         token = '';
   16993       } else {
   16994         token += c;
   16995         if (!glyphsSection) {
   16996           switch (token) {
   16997             case '/CharString':
   16998               glyphsSection = true;
   16999               break;
   17000             case '/Subrs':
   17001               ++i;
   17002               var num = parseInt(getToken(), 10);
   17003               getToken(); // read in 'array'
   17004               for (var j = 0; j < num; ++j) {
   17005                 var t = getToken(); // read in 'dup'
   17006                 if (t == 'ND' || t == '|-' || t == 'noaccess')
   17007                   break;
   17008                 var index = parseInt(getToken(), 10);
   17009                 if (index > j)
   17010                   j = index;
   17011                 var length = parseInt(getToken(), 10);
   17012                 getToken(); // read in 'RD'
   17013                 var data = eexec.slice(i + 1, i + 1 + length);
   17014                 var lenIV = program.properties.privateData['lenIV'];
   17015                 var encoded = decrypt(data, kCharStringsEncryptionKey, lenIV);
   17016                 var str = decodeCharString(encoded);
   17017                 i = i + 1 + length;
   17018                 t = getToken(); // read in 'NP'
   17019                 if (t == 'noaccess')
   17020                   getToken(); // read in 'put'
   17021                 program.subrs[index] = str.charstring;
   17022               }
   17023               break;
   17024             case '/BlueValues':
   17025             case '/OtherBlues':
   17026             case '/FamilyBlues':
   17027             case '/FamilyOtherBlues':
   17028             case '/StemSnapH':
   17029             case '/StemSnapV':
   17030               program.properties.privateData[token.substring(1)] =
   17031                 readNumberArray(eexecStr, i + 1);
   17032               break;
   17033             case '/StdHW':
   17034             case '/StdVW':
   17035               program.properties.privateData[token.substring(1)] =
   17036                 readNumberArray(eexecStr, i + 2)[0];
   17037               break;
   17038             case '/BlueShift':
   17039             case '/lenIV':
   17040             case '/BlueFuzz':
   17041             case '/BlueScale':
   17042             case '/LanguageGroup':
   17043             case '/ExpansionFactor':
   17044               program.properties.privateData[token.substring(1)] =
   17045                 readNumber(eexecStr, i + 1);
   17046               break;
   17047           }
   17048         } else if (c == '/') {
   17049           token = glyph = '';
   17050           while ((c = eexecStr[++i]) != ' ')
   17051             glyph += c;
   17052         }
   17053       }
   17054     }
   17055 
   17056     return program;
   17057   };
   17058 
   17059   this.extractFontHeader = function Type1Parser_extractFontHeader(stream,
   17060                                                                   properties) {
   17061     var headerString = '';
   17062     for (var i = 0, ii = stream.length; i < ii; i++)
   17063       headerString += String.fromCharCode(stream[i]);
   17064 
   17065     var token = '';
   17066     var count = headerString.length;
   17067     for (var i = 0; i < count; i++) {
   17068       var getToken = function getToken() {
   17069         var character = headerString[i];
   17070         while (i < count && (isSeparator(character) || character == '/'))
   17071           character = headerString[++i];
   17072 
   17073         var token = '';
   17074         while (i < count && !(isSeparator(character) || character == '/')) {
   17075           token += character;
   17076           character = headerString[++i];
   17077         }
   17078 
   17079         return token;
   17080       };
   17081 
   17082       var c = headerString[i];
   17083       if (isSeparator(c)) {
   17084         switch (token) {
   17085           case '/FontMatrix':
   17086             var matrix = readNumberArray(headerString, i + 1);
   17087 
   17088             // The FontMatrix is in unitPerEm, so make it pixels
   17089             for (var j = 0, jj = matrix.length; j < jj; j++)
   17090               matrix[j] *= 1000;
   17091 
   17092             // Make the angle into the right direction
   17093             matrix[2] *= -1;
   17094 
   17095             properties.fontMatrix = matrix;
   17096             break;
   17097           case '/Encoding':
   17098             var encodingArg = getToken();
   17099             var encoding;
   17100             if (!/^\d+$/.test(encodingArg)) {
   17101               // encoding name is specified
   17102               encoding = Encodings[encodingArg];
   17103             } else {
   17104               encoding = [];
   17105               var size = parseInt(encodingArg, 10);
   17106               getToken(); // read in 'array'
   17107 
   17108               for (var j = 0; j < size; j++) {
   17109                 var token = getToken();
   17110                 if (token == 'dup') {
   17111                   var index = parseInt(getToken(), 10);
   17112                   var glyph = getToken();
   17113                   encoding[index] = glyph;
   17114                   getToken(); // read the in 'put'
   17115                 }
   17116               }
   17117             }
   17118             if (!properties.hasEncoding && encoding) {
   17119               properties.baseEncoding = encoding;
   17120               break;
   17121             }
   17122             break;
   17123         }
   17124         token = '';
   17125       } else {
   17126         token += c;
   17127       }
   17128     }
   17129   };
   17130 };
   17131 
   17132 /**
   17133  * The CFF class takes a Type1 file and wrap it into a
   17134  * 'Compact Font Format' which itself embed Type2 charstrings.
   17135  */
   17136 var CFFStandardStrings = [
   17137   '.notdef', 'space', 'exclam', 'quotedbl', 'numbersign', 'dollar', 'percent',
   17138   'ampersand', 'quoteright', 'parenleft', 'parenright', 'asterisk', 'plus',
   17139   'comma', 'hyphen', 'period', 'slash', 'zero', 'one', 'two', 'three', 'four',
   17140   'five', 'six', 'seven', 'eight', 'nine', 'colon', 'semicolon', 'less',
   17141   'equal', 'greater', 'question', 'at', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H',
   17142   'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W',
   17143   'X', 'Y', 'Z', 'bracketleft', 'backslash', 'bracketright', 'asciicircum',
   17144   'underscore', 'quoteleft', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j',
   17145   'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y',
   17146   'z', 'braceleft', 'bar', 'braceright', 'asciitilde', 'exclamdown', 'cent',
   17147   'sterling', 'fraction', 'yen', 'florin', 'section', 'currency',
   17148   'quotesingle', 'quotedblleft', 'guillemotleft', 'guilsinglleft',
   17149   'guilsinglright', 'fi', 'fl', 'endash', 'dagger', 'daggerdbl',
   17150   'periodcentered', 'paragraph', 'bullet', 'quotesinglbase', 'quotedblbase',
   17151   'quotedblright', 'guillemotright', 'ellipsis', 'perthousand', 'questiondown',
   17152   'grave', 'acute', 'circumflex', 'tilde', 'macron', 'breve', 'dotaccent',
   17153   'dieresis', 'ring', 'cedilla', 'hungarumlaut', 'ogonek', 'caron', 'emdash',
   17154   'AE', 'ordfeminine', 'Lslash', 'Oslash', 'OE', 'ordmasculine', 'ae',
   17155   'dotlessi', 'lslash', 'oslash', 'oe', 'germandbls', 'onesuperior',
   17156   'logicalnot', 'mu', 'trademark', 'Eth', 'onehalf', 'plusminus', 'Thorn',
   17157   'onequarter', 'divide', 'brokenbar', 'degree', 'thorn', 'threequarters',
   17158   'twosuperior', 'registered', 'minus', 'eth', 'multiply', 'threesuperior',
   17159   'copyright', 'Aacute', 'Acircumflex', 'Adieresis', 'Agrave', 'Aring',
   17160   'Atilde', 'Ccedilla', 'Eacute', 'Ecircumflex', 'Edieresis', 'Egrave',
   17161   'Iacute', 'Icircumflex', 'Idieresis', 'Igrave', 'Ntilde', 'Oacute',
   17162   'Ocircumflex', 'Odieresis', 'Ograve', 'Otilde', 'Scaron', 'Uacute',
   17163   'Ucircumflex', 'Udieresis', 'Ugrave', 'Yacute', 'Ydieresis', 'Zcaron',
   17164   'aacute', 'acircumflex', 'adieresis', 'agrave', 'aring', 'atilde',
   17165   'ccedilla', 'eacute', 'ecircumflex', 'edieresis', 'egrave', 'iacute',
   17166   'icircumflex', 'idieresis', 'igrave', 'ntilde', 'oacute', 'ocircumflex',
   17167   'odieresis', 'ograve', 'otilde', 'scaron', 'uacute', 'ucircumflex',
   17168   'udieresis', 'ugrave', 'yacute', 'ydieresis', 'zcaron', 'exclamsmall',
   17169   'Hungarumlautsmall', 'dollaroldstyle', 'dollarsuperior', 'ampersandsmall',
   17170   'Acutesmall', 'parenleftsuperior', 'parenrightsuperior', '266 ff',
   17171   'onedotenleader', 'zerooldstyle', 'oneoldstyle', 'twooldstyle',
   17172   'threeoldstyle', 'fouroldstyle', 'fiveoldstyle', 'sixoldstyle',
   17173   'sevenoldstyle', 'eightoldstyle', 'nineoldstyle', 'commasuperior',
   17174   'threequartersemdash', 'periodsuperior', 'questionsmall', 'asuperior',
   17175   'bsuperior', 'centsuperior', 'dsuperior', 'esuperior', 'isuperior',
   17176   'lsuperior', 'msuperior', 'nsuperior', 'osuperior', 'rsuperior', 'ssuperior',
   17177   'tsuperior', 'ff', 'ffi', 'ffl', 'parenleftinferior', 'parenrightinferior',
   17178   'Circumflexsmall', 'hyphensuperior', 'Gravesmall', 'Asmall', 'Bsmall',
   17179   'Csmall', 'Dsmall', 'Esmall', 'Fsmall', 'Gsmall', 'Hsmall', 'Ismall',
   17180   'Jsmall', 'Ksmall', 'Lsmall', 'Msmall', 'Nsmall', 'Osmall', 'Psmall',
   17181   'Qsmall', 'Rsmall', 'Ssmall', 'Tsmall', 'Usmall', 'Vsmall', 'Wsmall',
   17182   'Xsmall', 'Ysmall', 'Zsmall', 'colonmonetary', 'onefitted', 'rupiah',
   17183   'Tildesmall', 'exclamdownsmall', 'centoldstyle', 'Lslashsmall',
   17184   'Scaronsmall', 'Zcaronsmall', 'Dieresissmall', 'Brevesmall', 'Caronsmall',
   17185   'Dotaccentsmall', 'Macronsmall', 'figuredash', 'hypheninferior',
   17186   'Ogoneksmall', 'Ringsmall', 'Cedillasmall', 'questiondownsmall', 'oneeighth',
   17187   'threeeighths', 'fiveeighths', 'seveneighths', 'onethird', 'twothirds',
   17188   'zerosuperior', 'foursuperior', 'fivesuperior', 'sixsuperior',
   17189   'sevensuperior', 'eightsuperior', 'ninesuperior', 'zeroinferior',
   17190   'oneinferior', 'twoinferior', 'threeinferior', 'fourinferior',
   17191   'fiveinferior', 'sixinferior', 'seveninferior', 'eightinferior',
   17192   'nineinferior', 'centinferior', 'dollarinferior', 'periodinferior',
   17193   'commainferior', 'Agravesmall', 'Aacutesmall', 'Acircumflexsmall',
   17194   'Atildesmall', 'Adieresissmall', 'Aringsmall', 'AEsmall', 'Ccedillasmall',
   17195   'Egravesmall', 'Eacutesmall', 'Ecircumflexsmall', 'Edieresissmall',
   17196   'Igravesmall', 'Iacutesmall', 'Icircumflexsmall', 'Idieresissmall',
   17197   'Ethsmall', 'Ntildesmall', 'Ogravesmall', 'Oacutesmall', 'Ocircumflexsmall',
   17198   'Otildesmall', 'Odieresissmall', 'OEsmall', 'Oslashsmall', 'Ugravesmall',
   17199   'Uacutesmall', 'Ucircumflexsmall', 'Udieresissmall', 'Yacutesmall',
   17200   'Thornsmall', 'Ydieresissmall', '001.000', '001.001', '001.002', '001.003',
   17201   'Black', 'Bold', 'Book', 'Light', 'Medium', 'Regular', 'Roman', 'Semibold'
   17202 ];
   17203 
   17204 var type1Parser = new Type1Parser();
   17205 
   17206 // Type1Font is also a CIDFontType0.
   17207 var Type1Font = function Type1Font(name, file, properties) {
   17208   // Get the data block containing glyphs and subrs informations
   17209   var headerBlock = file.getBytes(properties.length1);
   17210   type1Parser.extractFontHeader(headerBlock, properties);
   17211 
   17212   // Decrypt the data blocks and retrieve it's content
   17213   var eexecBlock = file.getBytes(properties.length2);
   17214   var data = type1Parser.extractFontProgram(eexecBlock);
   17215   for (var info in data.properties)
   17216     properties[info] = data.properties[info];
   17217 
   17218   var charstrings = this.getOrderedCharStrings(data.charstrings, properties);
   17219   var type2Charstrings = this.getType2Charstrings(charstrings);
   17220   var subrs = this.getType2Subrs(data.subrs);
   17221 
   17222   this.charstrings = charstrings;
   17223   this.data = this.wrap(name, type2Charstrings, this.charstrings,
   17224                         subrs, properties);
   17225 };
   17226 
   17227 Type1Font.prototype = {
   17228   createCFFIndexHeader: function Type1Font_createCFFIndexHeader(objects,
   17229                                                                 isByte) {
   17230     // First 2 bytes contains the number of objects contained into this index
   17231     var count = objects.length;
   17232 
   17233     // If there is no object, just create an array saying that with another
   17234     // offset byte.
   17235     if (count == 0)
   17236       return '\x00\x00\x00';
   17237 
   17238     var data = String.fromCharCode((count >> 8) & 0xFF, count & 0xff);
   17239 
   17240     // Next byte contains the offset size use to reference object in the file
   17241     // Actually we're using 0x04 to be sure to be able to store everything
   17242     // without thinking of it while coding.
   17243     data += '\x04';
   17244 
   17245     // Add another offset after this one because we need a new offset
   17246     var relativeOffset = 1;