Skip to content

Instantly share code, notes, and snippets.

@colxi
Last active August 1, 2022 08:42
Show Gist options
  • Save colxi/39fecddb0beeca75700d5b9d38247b05 to your computer and use it in GitHub Desktop.
Save colxi/39fecddb0beeca75700d5b9d38247b05 to your computer and use it in GitHub Desktop.
SCRIPT-8
// title: Dustland
// author : colxi - colxi.info - contact@colxi.info
// [ work in progress ]
// Info : Add the #debug hash to te URL for debugging
// version : 0.1.14
/*
TODO :
- Implement horizontal jump
- Implement run
- implement IA
- implement hung / climb / descend
- implement punch
CHANGELOG:
- 0.1.15
.. replaced tile() with getTile() (SCRIPT-8 API change)
.. gravity constant adjusted
.. improved ground collision (1 left edge / 0 ground / 1 right edge)
-- vertical jump implemented
- 0.1.14
.. Precision character bounding boxes (pixel perfect)
.. Enable Sprites mosaic boxes display with a global constant (RENDER_SPRITES_BOXES)
.. character.acceleration renamed to character.speed
.. Optimization : precalculate bounding boxes
.. Readjusted all multisprites to have y anchor coord at the bottom
- 0.1.13
.. Toggle Debug mode using space bar
.. Added SpriteMap Generator
.. Fast & accurate bounding boxes calculation (unfinished)
- 0.1.12
.. Added some debugging visualization
.. Added character position visualization
- 0.1.11
.. Characters bounding boxes visualization
.. Ground collision detection implemented
.. Character speed implemented
- 0.1.10
.. Basic character actions implemented
.. Multi-layered map implemented
.. Composed Sprites implemented
.. Basic IA implemented
- 0.1.9
.. Characters collision detection implemented
.. Better user input handling
.. Camera scrolling implemented
.. Characters health implemented
*/
// color palete for pixelart
// ["0f2a3f", "20394f", "08141e", "f6d6bd", "c3a38a", "4e495f", "997577", "816271"]
// https://www.pixilart.com/draw
/***************************************************************
* GLOBALS
***************************************************************/
// retrieve the window object (useful for development)
//const window = arguments[0].message.currentTarget.window;
// clear devtools console
//const console = window.console;
console.clear();
// hack : retrieve the sprites definitions (they will be used to
// generate accurate bounding boxes for the characters composed sprites
const _SPRITES_ = arguments[0].sprites;
// debugging constants
let DEV_FLAG = false; //(window.parent.location.hash === '#dev') ? true : false;
let RENDER_SPRITES_BOXES = false;
let RENDER_BOUNDING_BOXES = DEV_FLAG;
let RENDER_CHARACTER_COORDINATES = DEV_FLAG;
let PRINT_PLAYER_INFO = DEV_FLAG;
let PRINT_PLAYER_ACTION = DEV_FLAG;
const toggleDebug = function(val){
if( typeof val === 'undefined' ) val = !DEV_FLAG;
DEV_FLAG = val;
RENDER_BOUNDING_BOXES = val;
RENDER_CHARACTER_COORDINATES = val;
PRINT_PLAYER_INFO = val;
PRINT_PLAYER_ACTION = val;
}
// game engine constants
const RIGHT = 1;
const LEFT = -1;
const GRAVITY = .5;
const gameEngine ={
camerax:0,
cameray:0,
}
let Sprites;
let BoundingBoxes = {}
/***************************************************************
* CHARACTERS AND ACTIONS
***************************************************************/
/**
*
* Container for characters definitions, properties & states
*
*/
const characters = {
// player character
player : {
type : 'player',
x : 210,
y : 64,
speed:{
x: 0,
y:0
},
health: 3,
action : 'idle',
direction : RIGHT,
actionTick : 0,
_lastTickFrame : 0,
},
// enemy characters array
enemy : [
{
type : 'regular',
mood : 'pasive', // 'active',
x : 80,
y : 84,
speed:{
x: 0,
y: 0
},
health: 3,
action : 'idle',
direction : LEFT,
actionTick : 0,
_lastTickFrame : 0,
}
]
}
// global alias for PLAYER
const PLAYER = characters.player;
// shadow [0,-7,94]
// declare animations
const animations = {
idle : {
loop : true,
block : false,
length : 30,
vulnerable : true,
frames : {
0 : [[2,-33,9],[-6,-33,8],[-6,-25,24],[2,-25,25],[-6,-17,40],[2,-17,41],[-6,-9,56],[2,-9,57]],
15 : [[1,-32,9],[-7,-32,8],[-7,-24,24],[1,-24,25],[-6,-16,40],[2,-16,41],[-6,-9,56],[2,-9,57]]
}
},
falling : {
loop : true,
block : true,
length : 30,
vulnerable : true,
frames : {
0 : [[2,-33,9],[-6,-33,8],[-6,-25,24],[2,-25,25],[-6,-17,40],[2,-17,41],[-6,-9,56],[2,-9,57]]
//15 : [ [0,26,94], [1,1,9],[-7,1,8],[-7,9,24],[1,9,25],[-6,17,40],[2,17,41],[-6,24,56],[2,24,57] ]
}
},
walk : {
loop : true,
block : false,
length : 40,
vulnerable : true,
frames : {
0 : [[0,-33,6],[0,-25,22],[8,-25,23],[0,-17,38],[8,-17,39],[0,-9,54],[8,-9,55]],
10 : [[0,-33,1],[0,-25,17],[8,-25,18],[0,-17,33],[8,-17,34],[0,-9,49],[8,-9,50]],
20 : [[0,-33,6],[0,-25,22],[8,-25,23],[0,-17,38],[8,-17,39],[0,-9,54],[8,-9,55]],
30 : [[0,-33,4],[0,-25,20],[8,-25,21],[0,-17,36],[8,-17,37],[0,-9,52],[8,-9,53]],
},
},
v_jump : {
loop : false,
block : true,
length : 40,
vulnerable : true,
frames : {
0 : [[-10,-20,30],[-2,-20,31],[-1,-26,15],[-3,-12,47],[-8,-12,46],[-8,-4,62]],
10 : [[0,-28,15],[-8,-20,30],[0,-20,31],[-8,-12,46],[0,-12,47],[-8,-4,62]],
20 : [[0,-40,60],[0,-32,76],[-8,-32,75],[-8,-24,91],[0,-24,92],[0,-16,108],[0,-8,124] ,[-8,-8,123] ,[-4,-4,62] ],
},
},
h_jump : {
loop : false,
block : true,
length : 50,
vulnerable : true,
frames : {
0 : [[-10,-20,30],[-2,-20,31],[-1,-26,15],[-3,-12,47],[-8,-12,46],[-8,-4,62]],
10 : [[0,-28,15],[-8,-20,30],[0,-20,31],[-8,-12,46],[0,-12,47],[-8,-4,62]],
25 : [[0,-32,74],[-8,-24,89],[0,-24,90],[-16,-16,104],[-8,-16,105],[0,-16,106],[-16,-8,120],[-8,-8,121],[0,-8,122] ],
20 : [[-1,-31,74],[-8,-24,89],[0,-22,90],[-16,-16,104],[-8,-16,105],[-16,-8,120],[-8,-10,120] ],
25 : [[0,-32,74],[-8,-24,89],[0,-24,90],[-16,-16,104],[-8,-16,105],[0,-16,106],[-16,-8,120],[-8,-8,121],[0,-8,122] ],
35 : [[0,-28,15],[-8,-20,30],[0,-20,31],[-8,-12,46],[0,-12,47],[-8,-4,62]],
40 : [[-10,-20,30],[-2,-20,31],[-1,-26,15],[-3,-12,47],[-8,-12,46],[-8,-4,62]],
//,[0,-32,76],[-8,-32,75],[-8,-24,91],[0,-24,92],[0,-16,108],[0,-8,124] ,[-8,-8,123] ,[-4,-4,62] ],
},
},
/*
air kick
0 : [[-10,-20,30],[-2,-20,31],[-1,-26,15],[-3,-12,47],[-8,-12,46],[-8,-4,62]],
10 : [[0,-28,15],[-8,-20,30],[0,-20,31],[-8,-12,46],[0,-12,47],[-8,-4,62]],
20 : [[-1,-33,10],[6,-33,11],[-2,-25,26],[6,-25,27],[14,-25,28],[21,-24,29],[6,-17,43],[14,-17,44],[6,-9,54]],
*/
crouch: {
loop : true,
block : false,
length : 40,
vulnerable : true,
frames : {
0: [[-3,-10,54],[-5,-9,52],[-7,-19,24],[1,-17,25],[0,-9,57],[7,-12,18],[-6,-16,40],[1,-23,9]],
},
},
kick : {
loop : false,
block : true,
length : 30,
vulnerable : true,
frames : {
0 : [[0,-33,6],[0,-25,22],[8,-25,23],[0,-17,38],[8,-17,39],[0,-9,54],[8,-9,55]],
4 : [[1,-32,9],[-7,-32,8],[-7,-24,24],[1,-24,25],[-6,-16,40],[2,-1641],[-6,-9,56],[2,-9,57]],
5 : [[-1,-33,10],[6,-33,11],[-2,-25,26],[6,-25,27],[14,-25,28],[21,-24,29],[6,-17,43],[14,-17,44],[6,-9,54]],
8 : [[-2,-33,10],[6,-33,11],[-2,-25,26],[6,-25,27],[14,-25,28],[22,-25,29],[6,-17,43],[14,-17,44],[6,-9,54]],
// 25 : [ [0,26,94], [1,1,9],[-7,1,8],[-7,9,24],[1,9,25],[-6,17,40],[2,17,41],[-6,24,56],[2,24,57] ],
},
},
hit :{
loop : false,
block : true,
length : 25,
vulnerable : false,
frames:{
0 : [[-10,-20,30],[-2,-20,31],[-1,-26,15],[-3,-12,47],[-8,-12,46],[-8,-4,62]],
10 : [[1,-30,4],[0,-25,22],[9,-25,18],[0,-17,38],[0,-12,52],[7,-9,50]],
15 : [[1,-31,4],[0,-25,22],[8,-25,18],[0,-17,38],[0,-9,52],[7,-9,50]],
20 : [[-2,-33,4],[0,-25,22],[7,-25,18],[0,-17,38],[-1,-9,52],[4,-9,52]],
}
},
knocked:{
loop : false,
block : true,
length : 40,
vulnerable : false,
frames : {
0 : [[1,-30,4],[0,-25,22],[9,-25,18],[0,-17,38],[0,-12,52],[7,-9,50]],
3 : [[1,-31,4],[0,-25,22],[8,-25,18],[0,-17,38],[0,-9,52],[7,-9,50]],
// 6 : [[9,-33,11],[0,-25,26],[8,-25,27],[8,-24,27],[16,-25,28],[24,-25,29],[22,-21,29]],
6 : [[-10,-20,30],[-2,-20,31],[-1,-26,15],[-3,-12,47],[-8,-12,46],[-8,-4,62]],
20 : [[0,-33,10],[0,-25,26],[8,-25,27],[13,-23,28],[16,-25,28],[24,-26,29],[22,-22,29]],
// 30 : [[-3,-10,54],[-5,-9,52],[-7,-19,24],[1,-17,25],[0,-9,57],[7,-12,18],[-6,-16,40],[1,-23,9]],
}
}
}
// declare character action handlers
const actions = {
idle : function(character){},
falling : function(character){},
crouch:function(){},
walk : function(character){
let speed = .5 * character.direction;
character.speed.x += speed;
},
v_jump : function(character){
if( character.actionTick===20) {
character.y -= 10;
character.speed.y = -4;
}
},
h_jump : function(character){
if( character.actionTick===10) {
character.y -= 10;
character.speed.y = -3;
character.speed.x = 3.5*character.direction;
}
},
kick : function(character){
if( character.actionTick===0){
let speed = 2 * character.direction;
character.speed.x += speed;
}
let targetCandidates = ( character!==PLAYER ) ? [ PLAYER ] : characters.enemy;
// iterate targetCandidates
for( let i=0; i<targetCandidates.length; i++ ){
let target = targetCandidates[i];
// if target is not vulnerable skip it
if( !animations[ target.action ].vulnerable ) continue;
// discard targets if X coordinate is not candidate to recieve the action
if( character.direction === LEFT && target.x > character.x ) continue;
if( character.direction === RIGHT && target.x < character.x ) continue;
// if target is not in collision with character discard it
if( !checkCollision(character,target) ) continue;
target.x = character.x + ( 20 * character.direction );
target.speed.x += 4 * character.direction;
target.health--;
if( target.health > 0 ) setAction('hit', target);
else{
target.speed.x +=.5 * character.direction;
target.speed.y -=8
setAction('knocked', target);
}
}
},
hit: function(character){ },
knocked: function(character){
if( character.actionTick > 5 && checkGroundCollision( character ) ){
character.speed.x -= 2
character.speed.y = -5
}
}
}
/***************************************************************
* METHODS
***************************************************************/
//fall
//[ [0,31,94], [0,0,10],[8,0,11],[0,8,26],[8,8,27],[16,8,28],[24,8,29] ]
// check if exista a collision betwen two characters
const checkCollision = function(_a,_b){
const a = getSpriteBoundingBox(_a);
const b = getSpriteBoundingBox(_b);
if (a.x < b.x + b.width &&
a.x + a.width > b.x &&
a.y < b.y + b.height &&
a.height + a.y > b.y) return true;
else return false;
}
const checkGroundCollision=function(character){
//console.log(character.type,character.y)
// let box = getSpriteBoundingBox(character);
let x = character.x;
let y = character.y;
let _tile = getTile( Math.floor(x/8) , Math.floor(y/8) );
if(_tile){
if( _tile.type === 1 ) return true;
}
else return false;
}
const setAction = function(action,character){
if(character.action === action) return
character.action = action
character.actionTick = 0
character._lastTickFrame = 0
}
const renderTileSet = function( tileset,x,y,brightness=0,direction=1){
for(let i=0; i<tileset.length;i++){
let xMod = tileset[i][0] * direction
let yMod = tileset[i][1]
let spriteId = tileset[i][2]
let flip = false
if(direction === LEFT) flip = true
sprite( x+xMod, y+yMod, spriteId ,brightness,flip)
}
}
const renderBoundingBox = function( character ){
let boundingSquare = getSpriteBoundingBox(character)
if(RENDER_BOUNDING_BOXES) rectStroke( boundingSquare.x, boundingSquare.y, boundingSquare.width, boundingSquare.height,4 )
if(RENDER_SPRITES_BOXES){
for(let s=0; s< tileset.length; s++ ){
let xMod = tileset[s][0] * character.direction
let yMod = tileset[s][1]
rectStroke(character.x+xMod,character.y+yMod,8,8,1);
}
}
if(RENDER_CHARACTER_COORDINATES) rectStroke( boundingSquare.x+(boundingSquare.width)/2, boundingSquare.y+boundingSquare.height, 1,20,2 )
rectStroke( character.x-2, character.y, 5,1,1 )
rectStroke( character.x, character.y-2, 1,5,1 )
}
/**
*
*
*/
let randomBoolean = function(chance=.96){
if( Math.random() > chance ) return true
else return false
}
/**
*
* AI for the enemies
*
*/
let AI = function(character){
if( animations[character.action].block ) return;
if( character.direction === LEFT ){
if( character.x < PLAYER.x ) character.direction = RIGHT
let distance = (PLAYER.x - character.x) * (-1)
if( distance < 30 && randomBoolean() ) setAction( 'kick', character )
//else if( character.x < PLAYER.x ){}
//setAction( 'walk', character )
}else{
if( character.x > PLAYER.x+130) character.direction = LEFT
}
}
let physics = function(character){
}
let updateCharacter= function(character){
//
// physics
//
let inGround = checkGroundCollision(character)
// apply speed to X in character
character.x += character.speed.x
// apply friction to reduce speed
let friction = inGround ? .5 : .1
if(character.speed.x > 0 ){
character.speed.x -= friction
if( character.speed.x < 0 ) character.speed.x = 0
}else if(character.speed.x < 0 ){
character.speed.x += friction
if( character.speed.x > 0 ) character.speed.x = 0
}
// block if character reachedlimit of screen
if(character.x < 5) character.x = 5
if(inGround){
character.speed.y = 0;
character.y = ( Math.floor(character.y/8)*8 )+4;
if(character.action==='falling') setAction('idle',character)
//console.log(character.type, inGround, character.x,character.y,character.action)
}else{
//console.log(character.type, inGround, character.x,character.y,character.action)
character.speed.y += GRAVITY
character.y += character.speed.y ;
if( character.speed.y > 4 ) character.speed.y = 4;
if( character.action !== 'knocked' &&
character.action !== 'v_jump' &&
character.action !== 'h_jump' ){
if( character.action === 'walk') character.speed.x +=1 * character.direction;
// if(character.speed.y > 0)
setAction('falling', character)
}
}
// update character animation
let animation = animations[character.action]
if( character.actionTick === animation.length ){
if( !animation.loop ) setAction('idle',character)
else character.actionTick=0
}
if( animation.frames.hasOwnProperty( character.actionTick) ){
character._lastTickFrame = character.actionTick
}
actions[character.action]( character )
character.actionTick++
}
//
const generateSpritesMap = function( sprites ){
let result = {};
// iterate each sprite
for(let s in sprites ){
// create a new entry for the current sprite
// with 8 nested arrays (one for each sprite line )
result[s] = new Array( [],[],[],[],[],[],[],[] );
// iterate each sprite line
for(let l=0;l<8;l++){
// convert the string that represents the line
// to an array with a pixel value in each key
let pixels = sprites[s][l].split('');
for(let p=0;p<8;p++){
// iterate each pixel of the line and convert the
// pixel value to its numerical representation
// using -1 for the empty pixels
let value = (pixels[p]===' ') ? -1 : pixels[p] * 1;
// store the value
result[s][l].push( value )
}
}
}
return result;
}
function getSpriteContentOffsets(id){
if( !Sprites[id] ) return false;
let top = 999;
let left = 999;
let bottom = 0;
let right = 0;
for(let y=0; y<8; y++){
for(let x=0; x<8; x++){
if( Sprites[id][y][x] === -1 ) continue;
if( y < top ) top = y;
if( x < left ) left = x;
if( y > bottom ) bottom = y;
if( x > right ) right = x;
}
}
return {
top : top,
left : left,
bottom : bottom,
right : right,
width : right - left + 1,
height : bottom - top + 1,
};
}
const getBoundingBoxes = function(){
let boxes = {};
// iterate all animations
for(let a in animations){
// create a new entry for the animation
boxes[a] = {};
// iterate all frames
for(let f in animations[a].frames){
// create a new entry for the sprite part
boxes[a][f] = {
top:null,
left :null,
bottom: null,
right:null,
width : null,
height: null
};
// iterate all sprites
for(let s=0; s<animations[a].frames[f].length; s++ ){
let xMod = animations[a].frames[f][s][0];
let yMod = animations[a].frames[f][s][1];
let sp = animations[a].frames[f][s][2];
let box = getSpriteContentOffsets(sp)
if(!box) continue;
if(boxes[a][f].left === null || box.left+xMod< boxes[a][f].left ){
boxes[a][f].left = box.left+xMod;
}
if(boxes[a][f].right === null || box.right+xMod> boxes[a][f].right){
boxes[a][f].right = box.right+xMod;
}
if( boxes[a][f].top === null || box.top+yMod < boxes[a][f].top ){
boxes[a][f].top = box.top+yMod;
}
if(boxes[a][f].bottom === null || box.bottom+yMod > boxes[a][f].bottom){
boxes[a][f].bottom = box.bottom+yMod;
}
boxes[a][f].width = boxes[a][f].right-boxes[a][f].left+1;
boxes[a][f].height = boxes[a][f].bottom-boxes[a][f].top+1;
}
}
}
return boxes;
}
// calculate character current sprite bounding box
const getSpriteBoundingBox = function(character){
let b = {
x : BoundingBoxes[character.action][character._lastTickFrame].left + character.x,
y : BoundingBoxes[character.action][character._lastTickFrame].top + character.y,
width : BoundingBoxes[character.action][character._lastTickFrame].width,
height : BoundingBoxes[character.action][character._lastTickFrame].height,
}
// flip if character direction is left
if(character.direction===LEFT){
b.x = 8 + character.x - ( b.x + b.width - character.x );
}
return b;
}
/********************************************************
* GAME LOOP
********************************************************/
/**
*
* Update state (Game logic + input handling)
*
*/
const _update = function(state,input,elapsed){
state.elapsed=elapsed
for(let i=0;i<characters.enemy.length; i++){
AI( characters.enemy[i] )
updateCharacter( characters.enemy[i] )
}
if( !animations[PLAYER.action].block ){
if(input.select){
toggleDebug();
// freeze execution for a short fraction
// of time to prevent multiple executions
for(let i=0;i<100000000;i++){}
}
else if(input.a){
setAction('kick', PLAYER)
}
else if(input.b){
console.log('B pressed');
}
else if(input.up){
if(!input.right && !input.left) setAction('v_jump',PLAYER)
else setAction('h_jump',PLAYER)
}
else if(input.right){
setAction('walk',PLAYER)
PLAYER.direction = RIGHT
}
else if(input.left){
setAction('walk',PLAYER)
PLAYER.direction = LEFT
}
else if(input.down){
setAction('crouch',PLAYER)
}
else setAction('idle',PLAYER)
}
updateCharacter( PLAYER )
}
/**
*
* Render game Frame
*
*/
const _draw = function(state){
clear()
// set camera
if( PLAYER.x - state.camerax >50 ) state.camerax++
if( state.camerax && PLAYER.x - state.camerax <30 ) state.camerax--
camera(state.camerax,state.cameray)
// render map
map()
//renderTileSet( animations.h_jump.frames[ 0 ] , 50,40 )
// render enemies
for(let i=0;i<characters.enemy.length; i++){
let character = characters.enemy[i]
let animation = animations[character.action]
renderTileSet( animation.frames[ character._lastTickFrame ] , character.x, character.y,4, character.direction )
renderBoundingBox(character)
}
// render player
let animation = animations[PLAYER.action]
renderTileSet( animation.frames[ PLAYER._lastTickFrame ] , PLAYER.x, PLAYER.y, 0, PLAYER.direction )
renderBoundingBox(PLAYER)
//render map front layer
map(-64)
// render GUI
let modx = state.camerax
sprite(state.camerax + 0,0,2, PLAYER.health>=1?0:-2)
sprite(state.camerax + 8,0,2,PLAYER.health>=2?0:-2)
sprite(state.camerax + 16,0,2,PLAYER.health>=3?0:-2)
if( PRINT_PLAYER_INFO){
let inGround = checkGroundCollision(PLAYER)
print(70+modx,2, inGround?'GROUND':'AIR',4)
print(70+modx,11, 'x:'+PLAYER.x,4)
print(100+modx,11, 'y:'+PLAYER.y,4)
print(70+modx,20, 'ax:'+PLAYER.speed.x,4)
print(100+modx,20, 'ay:'+PLAYER.speed.y,4)
}
if( PRINT_PLAYER_ACTION ) print(100+modx,2,PLAYER.action,3)
}
/**
*
* Initialize the game!
*
*/
const INIT = (function(){
initialState = gameEngine;
// generate the sprites map object
Sprites = generateSpritesMap( _SPRITES_ );
// calculate the sprites precision bounding boxes
BoundingBoxes = getBoundingBoxes();
if(DEV_FLAG){
draw = function(){};
draw = _draw;
update = _update;
}else{
draw = _draw;
update = _update;
}
})();
/*
sprite positio modifier
for(let a in animations){
let frames = animations[a].frames;
for(let f in frames){
for(let s=0; s<frames[f].length; s++){
let box = BoundingBoxes[a][f];
animations[a].frames[f][s][1] -= 8*4+1
}
console.log(a,f, window.JSON.stringify(frames[f]) )
}
}
*/
[
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
19,
35,
19,
35,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
3,
16,
66,
null,
null,
null,
null,
null,
null,
null,
16,
16,
16,
16,
66,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
19,
35,
19,
35,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
51,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
3,
16,
66,
null,
null,
null,
null,
null,
null,
null,
16,
16,
16,
16,
66,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
95,
77,
79,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
19,
35,
19,
35,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
51,
51,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
3,
81,
66,
null,
null,
null,
null,
null,
null,
null,
16,
114,
16,
16,
66,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
65,
0,
0,
65,
48,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
19,
35,
51,
5,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
51,
51,
51,
19,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
68,
0,
0,
0,
48,
null,
null,
null,
null,
null,
3,
16,
66,
null,
null,
null,
null,
null,
null,
null,
null,
80,
81,
16,
66,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
98,
98,
98,
98,
99,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
19,
35,
null,
null,
null,
19,
35,
19,
35,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
51,
51,
51,
19,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
63,
67,
98,
98,
99,
null,
null,
null,
null,
null,
3,
16,
66,
null,
null,
null,
null,
null,
null,
null,
null,
16,
16,
16,
66,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
111,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
51,
5,
null,
null,
null,
51,
5,
19,
35,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
51,
51,
51,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
16,
66,
null,
null,
null,
null,
null,
null,
null,
null,
3,
16,
64,
null,
78,
93,
79,
null,
null,
null,
null,
16,
16,
16,
66,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
111,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
19,
35,
null,
null,
null,
19,
35,
19,
35,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
51,
51,
51,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
16,
66,
null,
null,
null,
null,
null,
null,
null,
null,
3,
96,
64,
3,
113,
113,
66,
null,
null,
null,
null,
80,
80,
81,
64,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
111,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
51,
5,
null,
null,
null,
19,
35,
51,
35,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
19,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
112,
64,
null,
null,
null,
null,
null,
null,
null,
null,
3,
16,
66,
3,
16,
16,
66,
null,
null,
null,
100,
16,
16,
16,
16,
16,
16,
16,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
111,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
19,
35,
84,
63,
82,
83,
0,
65,
65,
65,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
80,
64,
null,
null,
null,
null,
null,
null,
null,
null,
3,
16,
66,
3,
16,
16,
66,
null,
null,
null,
116,
16,
16,
16,
16,
16,
16,
16,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
95,
127,
79,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
19,
35,
78,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
81,
66,
null,
null,
null,
null,
null,
null,
null,
null,
3,
16,
64,
3,
16,
16,
66,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
83,
83,
0,
82,
65,
65,
0,
82,
65,
65,
0,
82,
65,
0,
48,
null,
null,
null,
68,
65,
83,
83,
65,
116,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
80,
64,
null,
null,
null,
null,
null,
null,
null,
null,
3,
97,
66,
3,
16,
16,
66,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
67,
115,
81,
80,
112,
80,
81,
80,
80,
32,
81,
16,
16,
16,
66,
null,
null,
null,
98,
16,
81,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
3,
80,
66,
null,
null,
null,
null,
null,
null,
null,
null,
3,
16,
66,
3,
16,
16,
66,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
97,
113,
96,
113,
97,
113,
96,
96,
97,
113,
96,
113,
97,
113,
64,
null,
null,
null,
null,
113,
96,
113,
97,
113,
113,
113,
113,
113,
113,
113,
113,
113,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
111,
126,
null,
null,
null,
125,
83,
83,
48,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
3,
16,
66,
null,
null,
null,
null,
null,
null,
null,
null,
3,
16,
66,
3,
16,
96,
64,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
114,
16,
32,
16,
114,
16,
16,
16,
114,
16,
112,
16,
114,
16,
66,
null,
null,
null,
null,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
111,
126,
null,
null,
null,
109,
80,
80,
66,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
3,
96,
64,
null,
null,
null,
null,
null,
null,
null,
null,
3,
16,
66,
3,
16,
16,
66,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
80,
80,
81,
112,
80,
80,
81,
80,
80,
112,
81,
80,
80,
80,
66,
null,
null,
null,
null,
113,
96,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
127,
48,
null,
null,
null,
109,
96,
97,
64,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
3,
16,
66,
null,
null,
null,
null,
null,
null,
null,
null,
3,
113,
64,
3,
16,
16,
66,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
97,
113,
96,
113,
97,
113,
96,
113,
97,
113,
96,
112,
97,
113,
64,
null,
null,
null,
null,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
16,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
64,
null,
null,
null,
109,
80,
80,
66,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
3,
97,
66,
null,
null,
null,
null,
null,
null,
null,
null,
3,
16,
66,
3,
16,
16,
66,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
126,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
126,
126,
126,
126,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
126,
126,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
126,
126,
126,
null,
126,
126,
126,
126,
126,
126,
126,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
126,
126,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
65,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
65,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
65,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
65,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
65,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
]
]
{
"iframeVersion": "0.1.247",
"lines": [
104,
172,
70,
165,
0,
0,
118,
148
]
}
{
"0": [
"00000000",
"00000000",
"00000000",
"00000000",
"00000000",
"00000100",
"00000001",
"22223351",
1
],
"1": [
" 433",
" 4331",
" 4311",
" 3001",
" 3301",
" 444 ",
" 5443 ",
" 54324"
],
"2": [
" ",
" 33 43 ",
" 4333333",
" 4333323",
" 4333323",
" 43323 ",
" 443 ",
" 4 "
],
"3": [
" 2",
" 2",
" 2",
" 2",
" 2",
" 3",
" 3",
" 3"
],
"4": [
" 433",
" 4331",
" 4310",
" 3110",
" 3310",
" 444 ",
" 6442 ",
" 64322"
],
"5": [
"666 ",
"6656 ",
"6566 ",
"5666 ",
"6666 ",
"6666 ",
"6666 ",
"6666 "
],
"6": [
" 436",
" 4331",
" 3311",
" 3001",
" 3301",
" 4440 ",
" 4224 ",
" 43324 "
],
"8": [
" ",
" ",
" ",
" ",
" ",
" 4",
" 44",
" 44"
],
"9": [
"6433 ",
"4301 ",
"3001 ",
"3011 ",
"101 ",
"003 ",
"3334 ",
"33444 "
],
"10": [
" ",
" ",
" ",
" ",
" ",
" ",
" 32 ",
" 2310 "
],
"11": [
" ",
" ",
" ",
" ",
" ",
" 00 ",
" 0044 ",
" 4444 "
],
"12": [
"5555 ",
"55555 ",
"555555 ",
"66655555",
" 665555",
" 55",
" ",
" "
],
"15": [
" ",
" ",
" ",
" ",
" 22 ",
" 2100 ",
" 2001 ",
" 2011 "
],
"16": [
"11111111",
"11111111",
"11111111",
"11111111",
"11111111",
"11111111",
"11111111",
"11111111"
],
"17": [
" 654222",
" 644322",
" 6644323",
" 6644432",
"66644444",
"65644444",
"55644445",
"55 4444"
],
"18": [
" ",
"3 ",
"23 ",
"22 ",
"223 ",
" 222 ",
" 200 ",
" 1 "
],
"19": [
" 4444445",
" 4444445",
" 4444445",
" 4444445",
" 4444445",
" 4444445",
" 4444445",
" 4444445"
],
"20": [
" 644422",
" 644422",
" 6644422",
" 6644422",
" 6644422",
" 6644442",
" 6644442",
"66666644"
],
"21": [
" ",
" ",
" ",
"2 ",
"2 ",
"22 ",
"22 ",
" 2 "
],
"22": [
" 42224 ",
" 43324 ",
" 43324 ",
" 44324 ",
" 44324 ",
" 44324 ",
" 443344",
" 443334"
],
"24": [
" 444",
" 4444",
" 4445",
" 4445",
" 44445",
" 44455",
" 44456",
" 44446"
],
"25": [
"22344 ",
"22344 ",
"22344 ",
"22344 ",
"23444 ",
"234444 ",
"2344444 ",
"3344444 "
],
"26": [
" 22000",
" 2200",
" 4223",
" 4444",
" 44333",
" 44003",
" 44004",
" 44444"
],
"27": [
" 3333 ",
"33333 ",
"3333 ",
"3444444 ",
"44444445",
"42444445",
"44222455",
"44442555"
],
"28": [
" ",
" ",
" 55 ",
" 55666",
"55555666",
"55555666",
"5555555 ",
"555555 "
],
"29": [
" ",
" ",
"666644 ",
"666644 ",
"6664 ",
"6 ",
" ",
" "
],
"30": [
" 4",
" 44",
" 4422",
" 4222",
" 442222",
" 442224",
" 22244",
" 22244"
],
"31": [
"44224 ",
"44244 ",
"442444 ",
"442444 ",
"424444 ",
"4244444 ",
"24 444 ",
"4 44 "
],
"32": [
"11111111",
"11111111",
"11111111",
"11111111",
"11112111",
"11111111",
"11121111",
"11111111"
],
"33": [
"66 5556",
"16 65556",
"1 55556",
" 55556",
" 555556",
" 655566",
" 655566",
" 655566"
],
"34": [
" ",
" ",
" ",
" ",
" ",
"6 ",
"6 ",
"66 "
],
"35": [
"6666 ",
"6666 ",
"6666 ",
"6666 ",
"6666 ",
"6666 ",
"6666 ",
"6666 "
],
"36": [
" 1555666",
" 1555556",
" 55556",
" 55566",
" 55566",
" 55556",
" 5555 6",
" 555 6"
],
"37": [
" 11 ",
" 1 ",
" ",
"6 ",
"66 ",
"65 ",
"66 ",
"666 "
],
"38": [
" 555335",
" 5555500",
" 5555550",
" 5555566",
" 555566",
" 555566",
" 555556",
" 555556"
],
"39": [
" ",
" ",
" ",
" ",
" ",
"6 ",
"6 ",
"6 "
],
"40": [
" 40046",
" 0065",
" 5665",
" 555",
" 555",
" 555",
" 5555",
" 5555"
],
"41": [
"5554400 ",
"55554 0 ",
"55555 ",
"55555 ",
"65555 ",
"65555 ",
"665555 ",
"665555 "
],
"42": [
" 3333 ",
" 33 ",
" 33 ",
" ",
" ",
" ",
" ",
" "
],
"43": [
"44444666",
" 4446665",
" 66655",
" 66655",
" 66655",
" 6655",
" 66665",
" 66666"
],
"44": [
"55555 ",
"555 ",
"55 ",
" ",
" ",
" ",
" ",
" "
],
"46": [
" 5522555",
" 5520555",
" 5500555",
" 555555",
" 55555",
" 55555",
" 5555",
" 5555"
],
"47": [
"5 444",
"5555 00",
"55555550",
"55555555",
"66555555",
"66655555",
"6666555 ",
"566666 "
],
"48": [
"11111 ",
"0111113 ",
"0011123 ",
"0001223 ",
"0012223 ",
"0122223 ",
"1222223 ",
"2222223 ",
0
],
"49": [
" 6666666",
" 6666 66",
" 6666 6",
"6666 ",
"6666 ",
"446 ",
"446 ",
" 44 "
],
"50": [
"666 ",
"666 ",
"666 ",
" 66 ",
" 666 ",
" 666 ",
" 66644 ",
" 64444 "
],
"51": [
" 4544445",
" 4444445",
" 4445445",
" 4444445",
" 4444445",
" 6565656",
" 4445445",
" 4445446"
],
"52": [
" 555 ",
" 555 ",
" 555 ",
" 6555 ",
" 655 ",
" 455 ",
" 446 ",
" 44 "
],
"53": [
"666 ",
"666 ",
"666 ",
"666 ",
"666 ",
"646 ",
"6444 ",
"64444 "
],
"54": [
" 555666",
" 555666",
" 555666",
" 5555666",
" 5555666",
" 5555666",
" 5533664",
" 44334 "
],
"55": [
"66 ",
"66 ",
"66 ",
"6 ",
"6 ",
" ",
" ",
" "
],
"56": [
" 5555",
" 5555",
" 6556",
" 6556",
" 6656",
" 6666",
" 66666",
" 64446"
],
"57": [
"666555 ",
"666555 ",
" 66555 ",
" 65555 ",
" 65555 ",
" 5555 ",
" 5555 ",
" 5544"
],
"59": [
" 66665 ",
" 665 ",
" 555 ",
" 555 ",
" 55 ",
" 55 ",
" 55 ",
" 55 "
],
"60": [
" ",
" ",
" ",
" ",
" ",
" 0 ",
" 00 ",
" 33 "
],
"62": [
" 55555",
" 5555 ",
" 4445 ",
" 444 ",
" ",
" ",
" ",
" "
],
"63": [
" 1111",
" 110000",
" 1100000",
"10000000",
"00000000",
"00000000",
"00000000",
"22222222",
1
],
"64": [
"222224 ",
"2222333 ",
"2233233 ",
"2322233 ",
"4222233 ",
"2222233 ",
"2222233 ",
"2222233 "
],
"65": [
"00000000",
"01000000",
"00000000",
"00000000",
"00000000",
"00000000",
"00000000",
"11223444",
1
],
"66": [
"2222233 ",
"2222233 ",
"2222233 ",
"2222233 ",
"2222233 ",
"2222233 ",
"2222233 ",
"3222233 "
],
"67": [
"00000000",
"00000000",
"00000000",
"00000000",
"11111111",
"44444555",
"44444444",
"33333333"
],
"68": [
" 1",
" 100",
" 0000",
" 10000",
" 000000",
" 1000000",
"10000000",
"21222242",
1
],
"72": [
" ",
" ",
" 7 ",
" ",
" ",
" ",
" ",
" "
],
"73": [
" ",
" ",
" ",
" 7 ",
" 7 7 ",
" 777 ",
" ",
" "
],
"74": [
" ",
" ",
" ",
" 0 ",
" 00 ",
" 444 ",
"44 ",
"44 0 "
],
"75": [
" ",
" ",
" ",
" ",
" 0",
" 20",
" 2",
" "
],
"76": [
" 4434 ",
" 4334 ",
" 4334 ",
" 333 ",
"2333 ",
"0333 ",
"0333 ",
"4333 "
],
"77": [
" ",
" ",
" ",
"00000000",
"00000001",
"00000011",
"00001111",
"00111111",
1
],
"78": [
" 31111",
" 331111",
" 3331111",
"33331111",
"11111111",
"11111111",
"11111111",
"11111111"
],
"79": [
" ",
" ",
" ",
"111112 ",
"111112 ",
"111123 ",
"111132 ",
"111222 "
],
"80": [
"22222222",
"11111111",
"11111111",
"11111111",
"11111111",
"11111111",
"11111111",
"11111111"
],
"81": [
"33333333",
"11113321",
"11111311",
"11111311",
"11111311",
"11111311",
"11111311",
"11111311"
],
"82": [
"11144 34",
"00001000",
"00000000",
"00100000",
"00000000",
"00000000",
"00000000",
"00000000",
1
],
"83": [
"00000000",
"00000000",
"00000000",
"00000000",
"00000000",
"00000000",
"00000000",
"00000000",
1
],
"84": [
" ",
" ",
" ",
" ",
" 0",
" 00",
" 000",
" 0000",
1
],
"89": [
" 44",
" 444",
" 444",
" 4444",
" 4440",
" 44440",
" 444446",
" 4444446"
],
"90": [
"4 66 ",
" 666 ",
"066 ",
"006 ",
"00 ",
" ",
" ",
" "
],
"91": [
" 4",
" 4",
" 4",
" 4",
" 44",
" 444",
" 444",
" 44"
],
"92": [
"42334 ",
"42234 ",
"44444 ",
"44444 ",
"44444 ",
"44444 ",
"44444 ",
"4444 "
],
"93": [
" ",
"33333333",
"11111111",
"11111111",
"11111111",
"11111111",
"11111112",
"11111112"
],
"94": [
" ",
" ",
" ",
" ",
" ",
" 111111 ",
"11111111",
" 111 "
],
"95": [
" ",
" ",
" ",
" 00",
" 000",
" 001",
" 0001",
" 0011"
],
"96": [
"11111311",
"11111311",
"11111311",
"11112321",
"33333333",
"11111111",
"11111111",
"11111111"
],
"97": [
"11111111",
"11111111",
"11111111",
"11111111",
"33333343",
"11111232",
"11111131",
"11111131"
],
"98": [
"11111111",
"11111111",
"11111111",
"11111111",
"33333333",
" ",
" ",
" "
],
"99": [
"232232 ",
"32342 ",
"2343 ",
"243 ",
"33 ",
" ",
" ",
" "
],
"100": [
" ",
" ",
" ",
" ",
" 3",
" 33",
" 234",
" 2434"
],
"104": [
" ",
" ",
" 5",
" 5",
" 5",
" 55",
" 555",
" 555"
],
"105": [
"44444443",
"4444443 ",
"4444333 ",
"44453333",
"44655663",
"55555666",
"55556666",
"55566666"
],
"106": [
" ",
" ",
" ",
" ",
" ",
" ",
"6 ",
"666 "
],
"108": [
"44444 ",
" 4445 ",
"55545 ",
"55555 ",
"55555 ",
"5555 ",
"5555 ",
"555 "
],
"109": [
" 322",
" 322",
" 322",
" 322",
" 322",
" 322",
" 322",
" 322"
],
"111": [
"75556565",
"65656565",
"75556565",
"65656565",
"75556565",
"65656565",
"75556565",
"65656565"
],
"112": [
"11111111",
"11111211",
"11111111",
"11311111",
"12111111",
"11111112",
"11111111",
"11111111"
],
"113": [
"11111111",
"11111111",
"11111111",
"11111111",
"22222222",
"11111111",
"11111111",
"11111111"
],
"114": [
"11111131",
"11111121",
"11111121",
"11111121",
"11121121",
"11111121",
"11111121",
"11111242"
],
"115": [
"00000013",
"00000133",
"00001333",
"00013335",
"01033351",
"44433511",
"44435111",
"55551111"
],
"116": [
"00021111",
"00221111",
"02221111",
"22221111",
"21111111",
"11111111",
"11111111",
"11111111",
1
],
"120": [
" 5555",
" 5555",
" 55555",
" 555555 ",
"45555 ",
"5555 ",
"55 ",
" "
],
"121": [
"55666666",
"5 6666",
" 6",
" ",
" ",
" ",
" ",
" "
],
"122": [
"66666 ",
"666666 ",
" 666666",
" 6666",
" 44",
" ",
" ",
" "
],
"123": [
" ",
" ",
" ",
" 5",
" 55",
" 555",
" 55",
" 55"
],
"124": [
"555 ",
"555 ",
"5556 ",
"5566 ",
"5566 ",
"5666 ",
"666 ",
" "
],
"125": [
" 0",
" 000",
" 000",
" 000",
" 200",
" 200",
" 220",
" 220"
],
"126": [
"71 ",
"721 ",
"71 ",
"721 ",
"72 ",
"711 ",
"71 ",
"711 "
],
"127": [
"65656566",
"65556566",
"65656666",
"65556666",
"65666666",
"66666666",
"06666660",
"00000000"
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment