Ben Simms

Tag: code

Brew B0y – My Arduino powered dual thermometer with counter

 BrewB0y – Arduino Powered thermometer for Homebrewing.

DSC_0111

The Plan:

I wanted to improve my homebrewing process and one part of the process requiring some attention was the constant monitoring of my beer and boiling temperatures.

I looked around for a thermometer with two probes, all I could find were food thermometer, I needed something better, something waterproof and something that could withstand temps of 90+. I couldn’t find one so I decided to make one!

The Outcome:

I was extremely pleased with the outcome, it actually worked and worked very well! The process was fairly plain sailing, as with most Arduino projects there were a number of existing libraries available so all I had to do was wire it up and create the functions I needed to make it mine.

The probes I bought were fantastic and to make life easier I could wire up multiple probes into a single port using the OneWire Library, then using a short bit of code, assign an address to each probe. This meant I could run both probes at the same time thus allowing me to keep an eye of the temperature in my mash tun while I boil up the next batch of water. I wanted a nice length so that I could run the probes around my shed without hassle and at 3meters, I had more than enough.

The first part was just getting the probes working and understanding how they worked, the next part was wiring up the LCD screen for which I used the Adafruit GFX library. After working out how to display text, this was actually a simple and fun part of the process.

Finally I tweaked and refactored some of my code to make the BrewBoy updated in a timely fashion.


DSC_0119
DSC_0109 DSC_0114 DSC_0115

Early Development Video:

https://goo.gl/photos/LoZtg522LKEUGH9P7

The Shopping List.

LCD Screen: http://www.ebay.co.uk/itm/Nokia-5110-LCD-Module-Monochrome-Display-Screen-84-x-48-for-Arduino-PIC-etc-/161258450379

Probes: (2 x 3m) http://www.ebay.co.uk/itm/111635721085?_trksid=p2057872.m2749.l2649&ssPageName=STRK%3AMEBIDX%3AIT

Arduino Nano: http://www.ebay.co.uk/itm/New-Arduino-Nano-V3-0-with-CH340G-5V-16M-compatible-ATmega328P-Headers-UK-/151765624720?hash=item2355efa790

4.7k Ohm Resistor http://www.maplin.co.uk/p/metal-film-06w-47k-ohm-resistor-m4k7

The Code.

The entire project and it’s dependancies can be found on GitHub here: https://github.com/zerosimms/Brewb0y

[codesyntax lang=”php”]

#include <OneWire.h>
#include <DallasTemperature.h>
#include <Adafruit_GFX.h>
#include <Adafruit_PCD8544.h>

//New display object.
Adafruit_PCD8544 display = Adafruit_PCD8544(12, 11, 10, 9, 8);

//Temperature Pins.
#define ONE_WIRE_BUS 3

//LCD Pins.
#define PIN_RESET 8
#define PIN_SCE   9
#define PIN_DC 10
#define PIN_SDIN  11
#define PIN_SCLK  12

//Onewire object.
OneWire oneWire(ONE_WIRE_BUS);

//Pass our oneWire reference to Dallas Temperature. 
DallasTemperature sensors(&oneWire);

//Each thermometer has a unique address, this can be found with addressFinder.ino
DeviceAddress thermometer1 = { 0x28, 0xFF, 0xE3, 0x86, 0x66, 0x14, 0x03, 0x4D };
DeviceAddress thermometer2 = { 0x28, 0xFF, 0xD7, 0x76, 0x66, 0x14, 0x03, 0xA7 };

int buttonOne = 7;
int buttonState = 0;
int temperature1;
int temperature2;
int timer = 90;
int seconds = 0;
boolean startCountDown = false;

//Prints all the data to the LCD screen.
void printScreen() {
  display.setCursor(0,0);
  display.println("---BREW-B0Y---");
  display.setCursor(0,10);
  display.println("BOIL:");
  display.setCursor(32,10);
  display.print( temperature1);
  display.print("c");
  display.setCursor(0,20);
  display.println("MASH:");
  display.setCursor(32,20);
  display.print(temperature2);
  display.print("c");
  display.setCursor(0,30);
  display.print("TIME:");
  display.setCursor(32 ,30);
  display.print(timer);
  display.print("m ");
  display.print(seconds);
  display.print("s");
  display.setCursor(0,36);
  display.print("--------------");
  display.display();
  display.clearDisplay();
}

void setup(void) {
  Serial.begin(9600); 
  pinMode(buttonOne, INPUT);
  display.clearDisplay();  
  display.begin();
  display.setContrast(45);
  display.setTextSize(1);
  display.setTextColor(BLACK);

  sensors.begin();
  sensors.setResolution(thermometer1, 10);
  sensors.setResolution(thermometer2, 10);
}

//Does what it says.
void getTemperatures() {
  temperature1 = sensors.getTempC(thermometer1);
  temperature2 = sensors.getTempC(thermometer2);
}

//Check to see what state the timer is at.
void checkTimer() {
  if (timer > 0 && startCountDown){
    if (seconds >= 1){
      seconds = seconds -1; 
    }
    if (seconds == 0){
      timer = timer -1;
      seconds = 60;
    }
    if (timer <= 0){
      timer = 0;
      seconds = 0;   
    }
    delay(1000);
  }
}

void checkIfTimerStarted() {
  if (buttonState == HIGH) {
    startCountDown = true; 
  }
}

void loop(void) {
  buttonState = digitalRead(buttonOne);
  printScreen();
  getTemperatures();
  sensors.requestTemperatures();
  checkIfTimerStarted();
  checkTimer();
}

[/codesyntax]

Exporting an image in binary

The Plan

To see what an image looked in binary… Why? I wasn’t sure to be honest, just interest I guess and because once I had the binary I could do something else with it… maybe

The Outcome

It was actually fairly simple I had most of the code from my other projects that I recycled, I then looked into how to get Processing exporting a text file with the binary code. Both of these were documented well and to my surprise all I had to do to get the RGB values of each pixel was cast it as a binary whoop whoop!

I did find it funny how the exported binary ended up being 100kb from the original image @ 591bytes

The Code

[codesyntax lang=”php”]

String imageUrl = "http://static.bbci.co.uk/weather/0.5.284/images/icons/individual_56_icons/en_on_light_bg/3.gif";

PImage image;
PrintWriter exportedValues;
int pixelYPosition;
int pixelXPosition;
boolean binaryExport = true;

public void setup() {
  exportedValues = createWriter("values.txt");
  image = loadImage(imageUrl, "png");
  size(image.width, image.height);
  loadPixels();
  image.loadPixels();
  print("Image Dimensions: " + image.width + "x" + image.height);
}

public void draw() {
  for (pixelYPosition = 0; pixelYPosition < image.height; pixelYPosition++) {
    for (pixelXPosition = 0; pixelXPosition < image.width; pixelXPosition++) {
      int loc = pixelXPosition + pixelYPosition * image.width;
      float r = red(image.pixels[loc]);
      float g = green(image.pixels[loc]);
      float b = blue(image.pixels[loc]);
      pixels[loc] = color(r, g, b);
      if (binaryExport == false) {
        String red = str(round(r));
        String blue = str(round(b));
        String green = str(round(g));
        exportedValues.print(red+green+blue);
      } else {
        int red = int(r);
        int green = int(g);
        int blue = int (b);
        exportedValues.print(binary(red+green+blue));
      }
    }
  }
  exportedValues.flush();
  exportedValues.close();
  updatePixels();
  noLoop();
}

[/codesyntax]

Original Image:

3

Binary:

[codesyntax lang=”php”]
00000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001010111111000000000000000000000010000101000000000000000000000000100001010000000000000000000000001000010100000000000000000000000010000101000000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101011111100000000000000000000001000010100000000000000000000000010000101000000000000000000000000100001010000000000000000000000001000010100000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010101111110000000000000000000000100001010000000000000000000000001000010100000000000000000000000010000101000000000000000000000000100001010000000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010100000010000000000000000000000101000000100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001010111111000000000000000000000010000101000000000000000000000000100001010000000000000000000000001000010100000000000000000000000010000101000000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101011111100000000000000000000001000010100000000000000000000000010000101000000000000000000000000100011001100000000000000000000001010111111000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101011111100000000000000000000001000010100000000000000000000000010000101000000000000000000000000100001010000000000000000000000001000010100000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010010100100000000000000000000000100001010000000000000000000000001000010100000000000000000000000010000101000000000000000000000000100010010000000000000000000000001011011110000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010110011010000000000000000000000101100110100000000000000000000001010110010000000000000000000000010101100100000000000000000000000101100110100000000000000000000001011001101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010101111110000000000000000000000100001010000000000000000000000001000010100000000000000000000000010000101000000000000000000000000100001010000000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101010000000000000000000000000001000010100000000000000000000000010000101000000000000000000000000100001010000000000000000000000001000010100000000000000000000000010100000010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010101100100000000000000000000000101001101000000000000000000000001010000010000000000000000000000010100000100000000000000000000000101000001000000000000000000000001010000010000000000000000000000010100000100000000000000000000000101000001000000000000000000000001010000010000000000000000000000010101100100000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001010111111000000000000000000000010000101000000000000000000000000100001010000000000000000000000001000010100000000000000000000000010000101000000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011101101000000000000000000000010001100110000000000000000000000100001010000000000000000000000001000010100000000000000000000000010000101000000000000000000000000100011001100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010110011010000000000000000000000101000001000000000000000000000001010000010000000000000000000000010100000100000000000000000000000101000001000000000000000000000001010000010000000000000000000000010100000100000000000000000000000101000001000000000000000000000001010000010000000000000000000000010100000100000000000000000000000101000001000000000000000000000001010000010000000000000000000000010100000100000000000000000000000101100110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101011111100000000000000000000001000010100000000000000000000000010000101000000000000000000000000100001010000000000000000000000001000010100000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101000000100000000000000000000001000010100000000000000000000000010000101000000000000000000000000100001010000000000000000000000001000010100000000000000000000000010101011110000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101011001000000000000000000000001010000010000000000000000000000010100000100000000000000000000000101000001000000000000000000000001010000010000000000000000000000010100000100000000000000000000000101000001000000000000000000000001010000010000000000000000000000010100000100000000000000000000000101000001000000000000000000000001010000010000000000000000000000010100000100000000000000000000000101000001000000000000000000000001010000010000000000000000000000010100000100000000000000000000000101011001000000000000000000000001011111101000000000000000000000010110111100000000000000000000000101001000000000000000000000000001010010000000000000000000000000010100100000000000000000000000000101001000000000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011011110000000000000000000000010000101000000000000000000000000100001010000000000000000000000001000010100000000000000000000000010000101000000000000000000000000100101001000000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001010011010000000000000000000000010100000100000000000000000000000101000001000000000000000000000001010000010000000000000000000000010100000100000000000000000000000101000001000000000000000000000001010000010000000000000000000000010100000100000000000000000000000101001101000000000000000000000001010011010000000000000000000000010100000100000000000000000000000101000001000000000000000000000001010000010000000000000000000000010100000100000000000000000000000101000001000000000000000000000001010000010000000000000000000000010100000100000000000000000000000101001101000000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101011111100000000000000000000001000110011000000000000000000000010000101000000000000000000000000100001010000000000000000000000001000010100000000000000000000000010110011100000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011011110000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010101100100000000000000000000000101000001000000000000000000000001010000010000000000000000000000010100000100000000000000000000000101000001000000000000000000000001010000010000000000000000000000010101100100000000000000000000000101110010100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111001010000000000000000000000101011001000000000000000000000001010000010000000000000000000000010100000100000000000000000000000101000001000000000000000000000001010000010000000000000000000000010100000100000000000000000000000101011001000000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101110110100000000000000000000001010010000000000000000000000000010000101000000000000000000000000100111000100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011101101000000000000000000000010100000010000000000000000000000100010010000000000000000000000001010111111000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101110010100000000000000000000001010000010000000000000000000000010100000100000000000000000000000101000001000000000000000000000001010000010000000000000000000000010100000100000000000000000000000101110010100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101100110100000000000000000000001010000010000000000000000000000010100000100000000000000000000000101000001000000000000000000000001010000010000000000000000000000010100000100000000000000000000000101110010100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011011110000000000000000000000010111011010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010101011110000000000000000000000100011001100000000000000000000001000010100000000000000000000000010000101000000000000000000000000100011001100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010100110100000000000000000000000101000001000000000000000000000001010000010000000000000000000000010100000100000000000000000000000101000001000000000000000000000001011100101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101110010100000000000000000000001010000010000000000000000000000010100000100000000000000000000000101000001000000000000000000000001010000010000000000000000000000010100110100000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010110011100000000000000000000000100101001000000000000000000000001000010100000000000000000000000010000101000000000000000000000000100001010000000000000000000000001000010100000000000000000000000010000101000000000000000000000000101000000100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001010000010000000000000000000000010100000100000000000000000000000101000001000000000000000000000001010000010000000000000000000000010101100100000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101011001000000000000000000000001010000010000000000000000000000010100000100000000000000000000000101000001000000000000000000000001010000010000000000000000000000010111001010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111011010000000000000000000000100111000100000000000000000000001000010100000000000000000000000010000101000000000000000000000000100001010000000000000000000000001000010100000000000000000000000010000101000000000000000000000000100001010000000000000000000000001000010100000000000000000000000010100000010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011001101000000000000000000000010101100100000000000000000000000101001101000000000000000000000001010000010000000000000000000000010100000100000000000000000000000101000001000000000000000000000001010000010000000000000000000000010100000100000000000000000000000101000001000000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101001101000000000000000000000001010000010000000000000000000000010100000100000000000000000000000101000001000000000000000000000001010000010000000000000000000000010100000100000000000000000000000101000001000000000000000000000001010110010000000000000000000000010110011010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011011110000000000000000000000010001001000000000000000000000000100001010000000000000000000000001000010100000000000000000000000010000101000000000000000000000000100001010000000000000000000000001000010100000000000000000000000010010100100000000000000000000000101011111100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011100101000000000000000000000010100110100000000000000000000000101000001000000000000000000000001010000010000000000000000000000010100000100000000000000000000000101000001000000000000000000000001010000010000000000000000000000010100000100000000000000000000000101000001000000000000000000000001010000010000000000000000000000010100110100000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010101100100000000000000000000000101000001000000000000000000000001010000010000000000000000000000010100000100000000000000000000000101000001000000000000000000000001010000010000000000000000000000010100000100000000000000000000000101000001000000000000000000000001010000010000000000000000000000010100000100000000000000000000000101110010100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001010000001000000000000000000000010000101000000000000000000000000100001010000000000000000000000001000010100000000000000000000000010001100110000000000000000000000101010000000000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010110011010000000000000000000000101000001000000000000000000000001010000010000000000000000000000010100000100000000000000000000000101000001000000000000000000000001010000010000000000000000000000010100000100000000000000000000000101000001000000000000000000000001010000010000000000000000000000010100000100000000000000000000000101000001000000000000000000000001010000010000000000000000000000010100110100000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011001101000000000000000000000010100000100000000000000000000000101000001000000000000000000000001010000010000000000000000000000010100000100000000000000000000000101000001000000000000000000000001010000010000000000000000000000010100000100000000000000000000000101000001000000000000000000000001010000010000000000000000000000010100000100000000000000000000000101100110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101110110100000000000000000000001000110011000000000000000000000010000101000000000000000000000000101001000000000000000000000000001011101101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101110010100000000000000000000001010000010000000000000000000000010100000100000000000000000000000101000001000000000000000000000001010000010000000000000000000000010100000100000000000000000000000101000001000000000000000000000001010000010000000000000000000000010100000100000000000000000000000101000001000000000000000000000001010000010000000000000000000000010100000100000000000000000000000101000001000000000000000000000001010000010000000000000000000000010100110100000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101110010100000000000000000000001010000010000000000000000000000010100000100000000000000000000000101000001000000000000000000000001010000010000000000000000000000010100000100000000000000000000000101000001000000000000000000000001010000010000000000000000000000010100000100000000000000000000000101000001000000000000000000000001010000010000000000000000000000010100000100000000000000000000000101110010100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101011111100000000000000000000001011011110000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010100110100000000000000000000000101000001000000000000000000000001010000010000000000000000000000010100000100000000000000000000000101000001000000000000000000000001010011010000000000000000000000010110011010000000000000000000000101100110100000000000000000000001011001101000000000000000000000010101100100000000000000000000000101000001000000000000000000000001010000010000000000000000000000010100000100000000000000000000000101000001000000000000000000000001010011010000000000000000000000010111001010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010110011010000000000000000000000101000001000000000000000000000001010000010000000000000000000000010100000100000000000000000000000101001101000000000000000000000001011100101000000000000000000000010110011010000000000000000000000101001101000000000000000000000001010000010000000000000000000000010100000100000000000000000000000101000001000000000000000000000001010000010000000000000000000000010100000100000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101100110100000000000000000000001010000010000000000000000000000010100000100000000000000000000000101000001000000000000000000000001010000010000000000000000000000010101100100000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111001010000000000000000000000101000001000000000000000000000001010000010000000000000000000000010110011010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001010110010000000000000000000000010100000100000000000000000000000101000001000000000000000000000001010000010000000000000000000000010100110100000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101011001000000000000000000000001010000010000000000000000000000010100000100000000000000000000000101000001000000000000000000000001010000010000000000000000000000010110011010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010101100100000000000000000000000101000001000000000000000000000001010000010000000000000000000000010100000100000000000000000000000101001101000000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101000001000000000000000000000001010000010000000000000000000000010100000100000000000000000000000101000001000000000000000000000001011001101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101001101000000000000000000000001010000010000000000000000000000010100000100000000000000000000000101000001000000000000000000000001010110010000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001010000010000000000000000000000010100000100000000000000000000000101000001000000000000000000000001010000010000000000000000000000010110011010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011100101000000000000000000000010100110100000000000000000000000101001101000000000000000000000001010011010000000000000000000000010100110100000000000000000000000101110010100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010110011010000000000000000000000101000001000000000000000000000001010000010000000000000000000000010100000100000000000000000000000101000001000000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101000000100000000000000000000001000010100000000000000000000000010000101000000000000000000000000100001010000000000000000000000001000010100000000000000000000000010000101000000000000000000000000100001010000000000000000000000001000010100000000000000000000000010000101000000000000000000000000101000001000000000000000000000001010000010000000000000000000000010100000100000000000000000000000101000001000000000000000000000001011100101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011100101000000000000000000000010100000100000000000000000000000101000001000000000000000000000001010000010000000000000000000000010100000100000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010100000010000000000000000000000100001010000000000000000000000001000010100000000000000000000000010000101000000000000000000000000100001010000000000000000000000001000010100000000000000000000000010000101000000000000000000000000100001010000000000000000000000001000010100000000000000000000000010100000100000000000000000000000101000001000000000000000000000001010000010000000000000000000000010100000100000000000000000000000101110010100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101110010100000000000000000000001010000010000000000000000000000010100000100000000000000000000000101000001000000000000000000000001010000010000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001010000001000000000000000000000010000101000000000000000000000000100001010000000000000000000000001000010100000000000000000000000010000101000000000000000000000000100001010000000000000000000000001000010100000000000000000000000010000101000000000000000000000000100001010000000000000000000000001010011010000000000000000000000010100000100000000000000000000000101000001000000000000000000000001010000010000000000000000000000010101100100000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010101100100000000000000000000000101000001000000000000000000000001010000010000000000000000000000010100000100000000000000000000000101001101000000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101000000100000000000000000000001000010100000000000000000000000010000101000000000000000000000000100001010000000000000000000000001000010100000000000000000000000010000101000000000000000000000000100001010000000000000000000000001000010100000000000000000000000010000101000000000000000000000000101011001000000000000000000000001010000010000000000000000000000010100000100000000000000000000000101000001000000000000000000000001010000010000000000000000000000010111001010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101110010100000000000000000000001010000010000000000000000000000010100000100000000000000000000000101000001000000000000000000000001010000010000000000000000000000010101100100000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010110111100000000000000000000000101011111100000000000000000000001010111111000000000000000000000010101111110000000000000000000000101011111100000000000000000000001010111111000000000000000000000010101111110000000000000000000000101011111100000000000000000000001010111111000000000000000000000010111001010000000000000000000000101001101000000000000000000000001010000010000000000000000000000010100000100000000000000000000000101000001000000000000000000000001010000010000000000000000000000010101100100000000000000000000000101100110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101100110100000000000000000000001010110010000000000000000000000010100000100000000000000000000000101000001000000000000000000000001010000010000000000000000000000010100000100000000000000000000000101001101000000000000000000000001011100101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010101100100000000000000000000000101001101000000000000000000000001010000010000000000000000000000010100000100000000000000000000000101000001000000000000000000000001010000010000000000000000000000010100000100000000000000000000000101000001000000000000000000000001010000010000000000000000000000010100000100000000000000000000000101000001000000000000000000000001010000010000000000000000000000010100000100000000000000000000000101000001000000000000000000000001010000010000000000000000000000010100000100000000000000000000000101000001000000000000000000000001010000010000000000000000000000010100000100000000000000000000000101000001000000000000000000000001010000010000000000000000000000010100000100000000000000000000000101000001000000000000000000000001010000010000000000000000000000010100000100000000000000000000000101000001000000000000000000000001010000010000000000000000000000010100000100000000000000000000000101000001000000000000000000000001010000010000000000000000000000010100000100000000000000000000000101000001000000000000000000000001010000010000000000000000000000010100000100000000000000000000000101000001000000000000000000000001010000010000000000000000000000010100000100000000000000000000000101000001000000000000000000000001010011010000000000000000000000010101100100000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010101100100000000000000000000000101001101000000000000000000000001010000010000000000000000000000010100000100000000000000000000000101000001000000000000000000000001010000010000000000000000000000010100000100000000000000000000000101000001000000000000000000000001010000010000000000000000000000010100000100000000000000000000000101000001000000000000000000000001010000010000000000000000000000010100000100000000000000000000000101000001000000000000000000000001010000010000000000000000000000010100000100000000000000000000000101000001000000000000000000000001010000010000000000000000000000010100000100000000000000000000000101000001000000000000000000000001010000010000000000000000000000010100000100000000000000000000000101000001000000000000000000000001010000010000000000000000000000010100000100000000000000000000000101000001000000000000000000000001010000010000000000000000000000010100000100000000000000000000000101000001000000000000000000000001010000010000000000000000000000010100000100000000000000000000000101000001000000000000000000000001010000010000000000000000000000010100000100000000000000000000000101000001000000000000000000000001010000010000000000000000000000010100110100000000000000000000000101011001000000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011011110000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010101100100000000000000000000000101001101000000000000000000000001010000010000000000000000000000010100000100000000000000000000000101000001000000000000000000000001010000010000000000000000000000010100000100000000000000000000000101000001000000000000000000000001010000010000000000000000000000010100000100000000000000000000000101000001000000000000000000000001010000010000000000000000000000010100000100000000000000000000000101000001000000000000000000000001010000010000000000000000000000010100000100000000000000000000000101000001000000000000000000000001010000010000000000000000000000010100000100000000000000000000000101000001000000000000000000000001010000010000000000000000000000010100000100000000000000000000000101000001000000000000000000000001010000010000000000000000000000010100000100000000000000000000000101000001000000000000000000000001010000010000000000000000000000010100000100000000000000000000000101000001000000000000000000000001010000010000000000000000000000010100000100000000000000000000000101000001000000000000000000000001010000010000000000000000000000010100000100000000000000000000000101001101000000000000000000000001010110010000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000100100001100000000000000000000001000110011000000000000000000000010101011110000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111001010000000000000000000000101100110100000000000000000000001010110010000000000000000000000010101100100000000000000000000000101000001000000000000000000000001010000010000000000000000000000010100000100000000000000000000000101000001000000000000000000000001010000010000000000000000000000010100000100000000000000000000000101000001000000000000000000000001010000010000000000000000000000010100000100000000000000000000000101000001000000000000000000000001010000010000000000000000000000010100000100000000000000000000000101000001000000000000000000000001010000010000000000000000000000010100000100000000000000000000000101000001000000000000000000000001010000010000000000000000000000010100000100000000000000000000000101000001000000000000000000000001010000010000000000000000000000010100000100000000000000000000000101000001000000000000000000000001010000010000000000000000000000010100000100000000000000000000000101000001000000000000000000000001010000010000000000000000000000010100110100000000000000000000000101011001000000000000000000000001011001101000000000000000000000010110011010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001010100000000000000000000000000010000101000000000000000000000000100001010000000000000000000000001000010100000000000000000000000010010100100000000000000000000000101100111000000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111011010000000000000000000000100010010000000000000000000000001000010100000000000000000000000010000101000000000000000000000000100001010000000000000000000000001000010100000000000000000000000010000101000000000000000000000000101000000100000000000000000000001011101101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011011110000000000000000000000010010100100000000000000000000000100001010000000000000000000000001000010100000000000000000000000010000101000000000000000000000000100001010000000000000000000000001000010100000000000000000000000010000101000000000000000000000000100010010000000000000000000000001010010000000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010101000000000000000000000000000100010010000000000000000000000001000010100000000000000000000000010000101000000000000000000000000100001010000000000000000000000001000010100000000000000000000000010000101000000000000000000000000101000000100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111011010000000000000000000000101001000000000000000000000000001000010100000000000000000000000010000101000000000000000000000000100001010000000000000000000000001000100100000000000000000000000010111011010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101010111100000000000000000000001000110011000000000000000000000010100000010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101101111000000000000000000000001001100010000000000000000000000010000101000000000000000000000000101001000000000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101100111000000000000000000000001001010010000000000000000000000010000101000000000000000000000000100001010000000000000000000000001000100100000000000000000000000010110111100000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001010111111000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101110110100000000000000000000001010111111000000000000000000000010101111110000000000000000000000101011111100000000000000000000001010111111000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010101111110000000000000000000000100001010000000000000000000000001000010100000000000000000000000010000101000000000000000000000000100001010000000000000000000000001001110001000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010101111110000000000000000000000100001010000000000000000000000001000010100000000000000000000000010000101000000000000000000000000100001010000000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010011100010000000000000000000000100001010000000000000000000000001000010100000000000000000000000010000101000000000000000000000000100001010000000000000000000000001010111111000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001010111111000000000000000000000010000101000000000000000000000000100001010000000000000000000000001000010100000000000000000000000010000101000000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011011110000000000000000000000010001001000000000000000000000000100001010000000000000000000000001000010100000000000000000000000010000101000000000000000000000000100101001000000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101011111100000000000000000000001000010100000000000000000000000010000101000000000000000000000000100001010000000000000000000000001000010100000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001010000001000000000000000000000010000101000000000000000000000000100001010000000000000000000000001000010100000000000000000000000010000101000000000000000000000000101010000000000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010101111110000000000000000000000100001010000000000000000000000001000010100000000000000000000000010000101000000000000000000000000100001010000000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001000110011000000000000000000000010000101000000000000000000000000100001010000000000000000000000001000010100000000000000000000000010001001000000000000000000000000101110110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001010111111000000000000000000000010000101000000000000000000000000100001010000000000000000000000001000010100000000000000000000000010000101000000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101010111100000000000000000000001000010100000000000000000000000010000101000000000000000000000000100010010000000000000000000000001010010000000000000000000000000010111011010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101011111100000000000000000000001000010100000000000000000000000010000101000000000000000000000000100001010000000000000000000000001000010100000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000100101001000000000000000000000001001110001000000000000000000000010110111100000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010101111110000000000000000000000100001010000000000000000000000001000010100000000000000000000000010000101000000000000000000000000100001010000000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001010111111000000000000000000000010000101000000000000000000000000100001010000000000000000000000001000010100000000000000000000000010000101000000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101110110100000000000000000000001010111111000000000000000000000010101111110000000000000000000000101011111100000000000000000000001010111111000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101000000000000000000000010111111010000000000000000000000101111110100000000000000000000001011111101

[/codesyntax]

 

Byte:

[codesyntax lang=”php”]

-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-6520202020-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-6520202020-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-6520202020-3-3-3-3-3-3-3-127-127-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-6520202020-3-3-3-3-3-3-65202051-65-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-6520202020-3-3-3-3-3-38220202036-34-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-51-51-78-78-51-51-3-3-3-3-3-3-6520202020-3-3-3-3-3-9620202020-127-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-78-102-126-126-126-126-126-126-126-78-3-3-3-3-6520202020-3-3-3-3-195120202051-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-51-126-126-126-126-126-126-126-126-126-126-126-126-51-3-3-6520202020-3-3-3-3-12720202020-81-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-78-126-126-126-126-126-126-126-126-126-126-126-126-126-126-78-3-34-112-112-112-112-3-3-3-342020202082-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-102-126-126-126-126-126-126-126-102-102-126-126-126-126-126-126-126-102-3-3-3-3-3-3-3-3-6551202020-50-3-3-3-3-3-3-3-34-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-78-126-126-126-126-126-78-27-3-3-3-3-27-78-126-126-126-126-126-78-3-3-3-3-3-3-3-3-19-11220113-3-3-3-3-3-3-19-12736-65-3-3-3-3-3-3-3-3-3-3-3-3-3-27-126-126-126-126-126-27-3-3-3-3-3-3-3-3-51-126-126-126-126-126-27-3-3-3-3-3-3-3-3-3-34-19-3-3-3-3-3-8151202051-3-3-3-3-3-3-3-3-3-3-3-3-3-102-126-126-126-126-27-3-3-3-3-3-3-3-3-3-3-27-126-126-126-126-102-3-3-3-3-3-3-3-3-3-3-3-3-3-3-50822020202020-127-3-3-3-3-3-3-3-3-3-3-3-3-126-126-126-126-78-3-3-3-3-3-3-3-3-3-3-3-3-78-126-126-126-126-27-3-3-3-3-3-3-3-3-3-3-3-1911320202020202020-127-3-3-3-3-3-3-3-51-78-102-126-126-126-126-126-126-3-3-3-3-3-3-3-3-3-3-3-3-3-3-102-126-126-126-126-126-126-78-51-3-3-3-3-3-3-3-3436202020202082-65-3-3-3-3-3-3-27-102-126-126-126-126-126-126-126-126-102-3-3-3-3-3-3-3-3-3-3-3-3-3-3-78-126-126-126-126-126-126-126-126-126-27-3-3-3-3-3-3-12720202051-96-3-3-3-3-3-3-3-51-126-126-126-126-126-126-126-126-126-126-126-102-3-3-3-3-3-3-3-3-3-3-3-3-3-51-126-126-126-126-126-126-126-126-126-126-51-3-3-3-3-3-195120-112-19-3-3-3-3-3-3-3-27-126-126-126-126-126-126-126-126-126-126-126-126-126-102-3-3-3-3-3-3-3-3-3-3-3-3-27-126-126-126-126-126-126-126-126-126-126-126-27-3-3-3-3-3-65-34-3-3-3-3-3-3-3-3-3-102-126-126-126-126-102-51-51-51-78-126-126-126-126-102-27-3-3-3-3-3-3-3-3-3-3-3-51-126-126-126-102-27-51-102-126-126-126-126-126-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-51-126-126-126-126-78-3-3-3-3-3-27-126-126-51-3-3-3-3-3-3-3-3-3-3-3-3-3-78-126-126-126-102-3-3-3-78-126-126-126-126-51-3-3-3-3-3-3-3-3-3-3-3-3-3-3-78-126-126-126-102-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-126-126-126-126-51-3-3-3-3-102-126-126-126-78-3-3-3-3-3-3-3-3-3-3-3-3-3-3-126-126-126-126-51-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-27-102-102-102-102-27-3-3-3-3-51-126-126-126-126-3-3-3-3-3-1272020202020202020-126-126-126-126-27-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-27-126-126-126-126-3-3-3-3-3-1272020202020202020-126-126-126-126-27-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-27-126-126-126-126-3-3-3-3-3-1272020202020202020-102-126-126-126-78-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-78-126-126-126-102-3-3-3-3-3-1272020202020202020-78-126-126-126-126-27-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-27-126-126-126-126-78-3-3-3-3-3-34-65-65-65-65-65-65-65-65-27-102-126-126-126-126-78-51-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-51-78-126-126-126-126-102-27-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-78-102-126-126-126-126-126-126-126-126-126-126-126-126-126-126-126-126-126-126-126-126-126-126-126-126-126-126-126-126-126-126-126-126-126-126-126-126-102-78-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-78-102-126-126-126-126-126-126-126-126-126-126-126-126-126-126-126-126-126-126-126-126-126-126-126-126-126-126-126-126-126-126-126-126-126-126-102-78-3-3-3-3-3-3-34-3-3-3-3-3-3-3-3-3-3-3-3-78-102-126-126-126-126-126-126-126-126-126-126-126-126-126-126-126-126-126-126-126-126-126-126-126-126-126-126-126-126-126-126-126-126-102-78-3-3-3-3-3-3-36751-81-3-3-3-3-3-3-3-3-3-3-3-27-51-78-78-126-126-126-126-126-126-126-126-126-126-126-126-126-126-126-126-126-126-126-126-126-126-126-126-126-126-102-78-51-51-3-3-3-3-3-3-3-9620202082-50-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-19362020202020-127-19-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-348220202020202036-112-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-96362020202020-127-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-19-11220202036-19-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-8151-127-3-3-3-3-3-3-349820-112-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-5082202036-34-3-3-3-3-3-3-3-65-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-19-65-65-65-65-3-3-3-6520202020113-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-6520202020-3-3-3-311320202020-65-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-6520202020-3-3-3-3-343620202082-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-6520202020-3-3-3-3-3-12720202020-96-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-6520202020-3-3-3-3-3-35120202036-19-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-6520202020-3-3-3-3-3-3-81202036-112-19-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-6520202020-3-3-3-3-3-3-382113-34-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-6520202020-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-6520202020-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-19-65-65-65-65-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3

[/codesyntax]

ASCII Visualiser

AsciiVisualiser1 AsciiVisualiser

The Plan

In an attempt to make a fake QR visualiser I started thinking if I could export the pixels as 0’s and 1’s to generate a unique URL So naturally I started thinking about a way to generate this output. My thought was to convert the image to black and white, make the blacks 1 and whites 0 which is what I did.

At which point the output of the video was an image vaguely visible and at which point I though ASCII art! So the plan changed slightly to make a poor mans ASCII art visualier!

The Result

I thought the output looked good, but if you compared it with a real ASCII art image you would notice straight away the lack of varying characters in my images and that was true because I simply converted the pixel colours either ‘255’ or ‘o’ to a”#” and “.@.”. I could have, if I was serious about taking this to the next level (which I wasn’t) start thinking about ways to add extra details. But anyhow, it worked fine the way it was and the result were good enough for my liking.

It can be hard to see the image, so squinting the eyes helps!

The Instructions

  • Spacebar to capture frames
  • Q to export your gif animation

The Download

mac

 

The Code

[codesyntax lang=”php”]

import processing.video.*;

int cameraScale = 9;
int columns;
int rows;
Capture camera;

void setup() {
  size(288, 280);
  columns = width/cameraScale;
  rows = height/cameraScale+1;
  camera = new Capture(this, columns, rows, 30);
   selectFolder("Export Location:", "folderSelected");
}

void draw() {

  camera.start();
  background(255);
  if (camera.available()) {
    camera.read();
  }
  camera.loadPixels();
  camera.filter(THRESHOLD, 0.5);

  for (int column = 0; column < columns; column++) {
    for (int row = 0; row < rows; row++) {
      int x = column*cameraScale;
      int y = row*cameraScale;
      float r = red(camera.pixels[column + row*camera.width]);
      float g = green(camera.pixels[column + row*camera.width]);
      float b = blue(camera.pixels[column + row*camera.width]);
      noStroke();

      if (r <=120 && g <=120 && b<=120) {
        text(".@.", x, y);
        fill(0);
      } else  if (r >120 && g>120 && b>120) {
        text(" # ", x, y);
        fill(0);
      }
    }
  }
}

void keyPressed() {
  if (key == ' ') {
    saveImage();
  }
  if (key == 'q') {
    createAnimation();
  }
}

[/codesyntax]

Virtual Boy Visualiser

The Plan

VirtualBoyMe  VirtualBoyMe

Thinking of my next tinker with video capture I remembered the work I had done with image comparison and wondered what would happen if I used live video feeds instead of images. The results were quiet interesting and I just so happened to choose red as my colour to define the changing pixels which reminded me a-lot of the Virtual Gameboy which seemed a bit weird seeing as my last project was recreating images as if they were from a Gameboy so I decided to run with it.

The Result

I was really happy with the result, it wasn’t as clear cut or defined as the Virtual boy, but the effect is very similar. I think for my next project I may try and recreate the SNES look… Seeing as though a theme is forming!

The Instructions

  • Spacebar to capture frames
  • Q to export your gif animation

The Download

mac

The Code

[codesyntax lang=”php”]

import processing.video.*;

PImage imageOne;
PImage imageTwo;

Capture camera;
int pixelYPosition;
int pixelXPosition;

public void setup() {
  saveFrame("imageOne.jpg");
  saveFrame("imageTwo.jpg");
  size (288, 288);

  imageOne = new PImage(width, height);
  imageTwo = new PImage(width, height);
  camera = new Capture(this, width, height, 30);
  camera.start();
  selectFolder("Export Location:", "folderSelected");
}

public void draw() {
  loadPixels();

  if (camera.available()) {
    camera.read();
    camera.filter(THRESHOLD, 0.3);
    image(camera, 0, 0);
    saveFrame("imageOne.jpg");
    saveFrame("imageTwo.jpg");
  }

  loadPixels();
  imageOne = loadImage("imageOne.jpg");
  imageOne.loadPixels();

  for (pixelYPosition = 0; pixelYPosition < imageOne.height; pixelYPosition++) {
    for (pixelXPosition = 0; pixelXPosition < imageOne.width; pixelXPosition++) {
      //
      int loc = pixelXPosition + pixelYPosition * imageOne.width;
      int loc1 = pixelXPosition + pixelYPosition * imageTwo.width;
      //
      float r = red(imageOne.pixels[loc]);
      float g = green(imageOne.pixels[loc]);
      float b = blue(imageOne.pixels[loc]);
      //
      float r1 = red(imageTwo.pixels[loc1]);
      float g1 = red(imageTwo.pixels[loc1]);
      float b1 = red(imageTwo.pixels[loc1]);
      if (r==r1 && g == g1 && b == b1) {
        r = 155;
        g = 0;
        b = 0;
      } else {
        r = 0;
        g = 0;
        b = 0;
      }
      pixels[loc] = color(r, g, b);
    }
  }
  updatePixels();
}
[/codesyntax]

 

 

Gif Animation For Java

I spent a lot of time trying to find a nice light weight library for Java capable of exporting an animated Gif, so I wanted to share this with others who may find it useful.

I have to provide the Jar from my web site because I cannot for the life of me hunt down the original source, I by no means make claims to this Jar and if anyone out there recognizes it, let me know so I can give full credit.
Original author and full documentation here

Most of my work is done with Processing thus the example code below would be placed in a new tab inside the Processing IDE. Copy the code  into a new tab:

The Code

[codesyntax lang=”php”]

import gifAnimation.GifMaker;

PImage img;
String saveLocation;
int currentFrame = 0;

//Gif Animation Options
int playbackSpeed = 250;
int loopAnimation = 0;
int exportQaulity = 100;
String fileExportName = "GameBoyMe";

void folderSelected(File selection) {
  if (selection == null) {
    saveLocation = selection.getAbsolutePath();
    println("Default location selected");
  } else {
    saveLocation = selection.getAbsolutePath();
    println(saveLocation);
  }
}

//Save a shot of the current screen and increase the frame count.
void saveImage() {
  String frame = "frames/frame" + currentFrame + ".gif";
  saveFrame(frame);
  currentFrame ++;
}

//Loop through all our frames and add them to the gif.
void createAnimation() {
  GifMaker gifExport = new GifMaker (this, saveLocation + "/" + fileExportName + ".gif", exportQaulity);
  int framesCount = 0;
  gifExport.setRepeat(loopAnimation);

  while (framesCount < currentFrame ) {
    img = loadImage("frames/frame" + framesCount + ".gif");
    gifExport.addFrame(img);
    gifExport.setDelay(playbackSpeed);
    framesCount ++;
  }
  gifExport.finish();
  println("Animation Exported " + saveLocation);
}

//Keys for taking the frames and exporting the gif.
void keyPressed() {
  if (key == ' ') {
    saveImage();
  }
  if (key == 'q' || key == 'Q') {  
    createAnimation();
  }
}

[/codesyntax]

 

Dont forget to add the below into your main tab so that we know where to export the Gif.

[codesyntax lang=”php”]

  selectFolder("Export Location:", "folderSelected");

[/codesyntax]

 

Now all you need to do is add the Gif Jar to your project by dragging the below file into Processing

The Jar File

That should be it, ready to run!

I’ve tried to make everything I can remember that’s configurable obvious by placing it at the top of my subclass

The Gameboy Effect

[embedyt]https://www.youtube.com/watch?v=Lb6pWBKEtQY&feature=youtu.be[/embedyt]

image fuckInstagram2 fuckInstagram1 fuckInstagram

 

 

 

I’ve always liked chunky pixels and “retro” gaming and while I’m taking a step away from games for a bit I wanted to do something with the gaming theme.

I was keen to develop a number of camera applications for a project I have in mind later down the line and thus I wanted to do something with the camera and gaming theme, what I thought of was an attempt at emulating the Gameboy camera!

The Plan

The idea as per, was simple. Use a web camera to oversize the pixels, colour them to look like a Gameboy screen and export an image. To do this I would:

  • Get the web camera running in a squared format
  • Use the Capture class to give me access to the pixel information
  • Create a loop to read the data for every pixel
  • Scale the pixels to a nice large size
  • Use THRESHOLD filter and leave it at it’s default settings so the image is converted to black and white
  • Convert the black and white colours for every pixel to my Gameboy esq colours
  • Allow the user to export image

The Result

Again, I was really happy with the result and it was fairly easy to achieve. Though I was happy with the Gameboy colours, I did some images using different colours that I felt were more “alive”.  Something for me to think about later.

Download the app here (press ‘s’ to export the current frame), or try it yourself using the code below.

windows mac

The Code

[codesyntax lang=”php”]

import processing.video.*;

int cameraScale = 6;
int columns;
int rows;
Capture camera;

void setup() {
  size(288, 288);
  columns = width/cameraScale;
  rows = height/cameraScale;
  camera = new Capture(this, columns, rows, 30);
}

void draw() {
  camera.start();
  if (camera.available()) {
    camera.read();
  }
  camera.loadPixels();
  camera.filter(THRESHOLD);

  for (int column = 0; column < columns; column++) {
    for (int row = 0; row < rows; row++) {
      int x = column*cameraScale;
      int y = row*cameraScale;
      float r = red(camera.pixels[column + row*camera.width]);
      float g = green(camera.pixels[column + row*camera.width]);
      float b = blue(camera.pixels[column + row*camera.width]);
      noStroke();
      //Fill white pixels black, for background.
      if (r == 255 && g==255 && b ==255) {
        r=96;
        g=109;
        b=11;

        //Fill white pixels to selected colour
      } else if (r == 0 && g==0 && b ==0) {
        r=0;
        g=40;
        b=0;
      }
      fill(r, g, b);
      rect(x, y, cameraScale, cameraScale);
    }
  }
  updatePixels();
}

void keyPressed() {
  if (key == 's' || key =='S') {
    saveFrame("image.gif");
  }
}

[/codesyntax]

 

Comparing Two Images And Finding The Differences In Java

After a passing comment about comparing two images by “eyeballing”, I wondered if I could create a little application to do the task in an automated fashion, in Java of course.

I had used the PImage class before and I knew it was capable of reading the values of every pixel in a given image so that was my first stop.

I decided to use the weather icons from the BBC website as they share the same dimensions (very important) and some common pixels values.

The reason the dimensions were so important is that I actually re-draw the image intercepting the differences, and if the dimensions of both images did not match exactly then the script would fail (minor detail for this purpose 🙂 )

1  3

 

The Plan

So, below you can see what I came up with, I’ll quickly walk through it (if only so I have it tracked somewhere)

  • I start by providing the location of the two images, these images could also be local.
  • Then I created an instant of Pimage for both images.
  • I set the size of the frame to the first image width, if the frame size does not match the image then it breaks the redraw process.
  • After this I created a loop and got each RED, GREEN and BLUE value of each pixel from the current location of both images.
  • If the values collected did not match, then I convert them to red so that they were highlighted

This was the outcome of comparing both the above images

The Result

Screen Shot 2014-08-05 at 17.44.48

 

You can clearly see the difference in red, pretty cool!

Give it a whirl yourself by copying the below code into Processing and hitting ‘Run’.

 

[codesyntax lang=”php”]

String imageOneUrl = "http://static.bbci.co.uk/weather/0.5.284/images/icons/individual_56_icons/en_on_light_bg/3.gif";
String imageTwoUrl = "http://static.bbci.co.uk/weather/0.5.284/images/icons/individual_56_icons/en_on_light_bg/1.gif";

PImage imageOne;
PImage imageTwo;
int pixelYPosition;
int pixelXPosition;

public void setup() {
  imageOne = loadImage(imageOneUrl, "png");
  imageTwo = loadImage(imageTwoUrl, "png");
  size(imageOne.width, imageOne.height);
}

public void draw() {
  loadPixels();
  imageOne.loadPixels();
  imageTwo.loadPixels();

  for (pixelYPosition = 0; pixelYPosition < imageOne.height; pixelYPosition++) {
    for (pixelXPosition = 0; pixelXPosition < imageOne.width; pixelXPosition++) {

      int loc = pixelXPosition + pixelYPosition * imageOne.width;
      int loc1 = pixelXPosition + pixelYPosition * imageTwo.width;

      float r = red(imageOne.pixels[loc]);
      float g = green(imageOne.pixels[loc]);
      float b = blue(imageOne.pixels[loc]);

      float r1 = red(imageTwo.pixels[loc1]);
      float r2 = red(imageTwo.pixels[loc1]);
      float r3 = red(imageTwo.pixels[loc1]);

      if (!(r == r1) && (!(g == r2) && (!(b == r3)))) {
        r = 255;
        g = 0;
        b = 0;
      }

      pixels[loc] = color(r, g, b);
    }
  }
  updatePixels();
}

[/codesyntax]

 

Creating a static tv effect

In the process of creating a little project I stumbled across a way to creating an effect that looks exactly like a de-tuned TV.  It’s so simple that you can do it yourself in a matter of seconds!

Copy this code into processing and run!

[codesyntax lang=”php”]

public void setup() {
  size(640, 480);
}

public void draw() {
  loadPixels();  
  for (int i = 0; i < pixels.length; i++) {
    float randomNumber = random(255);
    color c = color(randomNumber);
    pixels[i] = c;    
  }
  updatePixels();
}
[/codesyntax]

What do we do here then?

Well, we set the size of the applet.

Then we tell Processing we want to fiddle with some Pixels so we call ‘loadPixels’.

Next, we create a little loop that finds every pixel and changes the colour to within the range of 0 – 255 which is the RGB value.

The last step is to update and that’s it, static TV… So real it’s scray!

Download

windows mac

 

 

Screenshot

Screenshot

Screenshot

Processing development in Intellij – 3 simple steps and pictures

Step One:

Assuming you have intelliJ and Processing installed, launch IntelliJ.

The first thing we are going to do is grab the core library.

File – Project Settings – Libraries – Add – Java

Screen Shot 2014-07-13 at 20.26.57Screen Shot 2014-07-13 at 20.29.34

Now select OK and return to your project. We must extend our class with PApplet (Processing Applet) this gives our class access to the Processing methods.

 

Step Two

Because we are using PApplet we have to tell IntelliJ where the main method lives, use the below code and make sure PApplet.main matches the name of your class.

Screen Shot 2014-07-14 at 08.51.10

[codesyntax lang=”java” lines=”normal”]

static public void main(String args[]) {
PApplet.main(new String[]{“YOUR CLASS NAME HERE”});
}[/codesyntax]

 

Step Three

 

As part of the build process we must tell IntelliJ where the module lies. Select the following button and hit ‘Edit – Configurations’

Screen Shot 2014-07-13 at 20.38.28

Screen Shot 2014-07-13 at 20.41.35

Now select the displayed module.

 

That’s it your now ready to run your Processing application by hitting the run icon (top right). Now you can enjoy the benefits that IntelliJ brings with it’s suggestive inputs etc..

Anytime Bulb Mode

 

A few weeks ago I decided I should get back onto this project and see if I couldn’t fix a major blocker I had. The problem I had was with the motion tracking library, unfortunately the drivers for it were no longer supported and on-top of that I couldn’t get the basics running on the Raspberry PI.

With that in mind, I figured I would try and make my own version, a bit scary and perhaps optimistic but I thought “what the hell” and gave it a go.

Progress was slow to begin with, but I started to research the Capture library for Processing and realised it was smart enough to pick out every pixel colour it could find in an image or video feed!!! So all I had to do was think of a way to track the desired colour.

Some time later I got it to a working state. The behavior wasn’t exactly what I wanted, mainly I was tracking individual pixels whereas my previous library was able to find a collection or matching pixels at once, the difference being the old library would build the image much quicker and also create a nice outline image. (I’m still aiming for that effect)

Anyway, I started using my code to take some images and create some awesome art and I decided at this stage I would create a branch for it and also big it up a little.

The art was great and I could easily see it on an album or just all a sweet looking background!

 

Screen Shot 2014-06-21 at 21.38.38

The images below show the progression of my code and it’s behavior

Screen Shot 2014-06-21 at 21.40.37

Tracking a colour and drawing ellipses at the location.

Screen Shot 2014-06-28 at 11.09.05

Bigger ellipses and coloured. It was looking too real so I quickly deviated away from this effect

Screen Shot 2014-06-27 at 17.12.20

Not that you can tell, but at this stage I got the image drawing quickly

snapShot1404922432597

Switched to vertexs (which took quite some time) but the effect was much more inline with my previous app

snapShot1404931202168

Added more colours to paint with

snapShot1404924170863

An example result, what I call Star-mapping!

 

Copyright © 2017 Ben Simms

Theme by Anders NorenUp ↑