BG 1 FOR IY=0 TO 15 FOR IX=0 TO 15 CELL IX,IY,IX+IY*16 NEXT IX NEXT IY BG 0 FOR I=0 TO 15 CELL 16,I,191 NEXT I TEXT 17,1,"TAP" DIM MESSAGE$(2) MESSAGE$(0)="MOV" MESSAGE$(1)="X2 " MESSAGE$(2)="X1 " TOUCHSCREEN DIM TTX(2),TTY(2) TTX(1)=31 TTY(1)=31 S=0 TX=0 TY=0 DO IF TOUCH AND TOUCH.X>127 THEN IF TAP THEN ADD S,1,0 TO 2 NUMBER 18,3,S,1 TEXT 17,5,MESSAGE$(S) END IF ELSE IF TOUCH THEN FOR I=0 TO 0 CALL CLEAR_C(6+I,6) NEXT I 'TX=TOUCH.X\20 'TY=TOUCH.Y\16 TX=TOUCH.X-79 TY=TOUCH.Y-63 TTX(S)=TX TTY(S)=TY 'RX=INT(5*(COS(TIMER*0.1)+1)) 'RY=INT(5*(SIN(TIMER*0.1)+1)) 'CALL CCOP6(1,23,TX,TY,31,31,8,0,0,0) 'CALL CCOP6(1,23,8,8,31,31,8,0,TX,TY) 'CALL CCOP6(1,23,8,8,31,31,TX,TY,0,0) 'CALL CCOP6(1,23,-TX,-TY,31,31,TX,TY,0,0) 'CALL CCOP6(1,23,TX,TY,31,31,8-TX,8-TY,0,0) 'CALL COPYO(0,0,31,31,TX,TY,1,23) 'CALL COPYO(TTX(2),TTY(2),TTX(1),TTY(1),TTX(0),TTY(0),1,23) 'CALL CCOP6(1,23,TTX(0)+TTX(2),TTY(0)+TTY(2),31,31,8-TTX(2),8-TTY(2),-TTX(1),-TTY(1)) 'TRACE 8-TX '1: A TEST FOR CROP 0 '2: A TEST FOR X0,Y0 : CROP AND SHIFT AT THE SAME TIME 'CALL CCOP7(1,RX,RY,0,0,4,TOUCH.X\20,TOUCH.Y\16,1) 'CALL COPYO(9-TTX(2),8-TTY(2),TTX(1)-8,TTY(1),TTX(0),TTY(0),1,23) CALL COPYO3(TTX(2),TTY(2),TTX(1),TTY(1),TTX(0),TTY(0),1,23) SPRITE 0,TTX(1)+8,TTY(1),16 SPRITE 1,TTX(2)+8,TTY(2),16 'SPRITE 0,TTX(1)+8,TTY(1),16 'SPRITE 1,9-TTX(2),8-TTY(2),16 SPRITE 0 PAL 4 SPRITE 1 PAL 4 END IF WAIT VBL LOOP 'WHAT '1-A=B ' -A=B-1 ' A=1-B 'OOP IS SHORT FOR OOPS 'X OFFSET +8 OOPS SUB COPYO2(X0,Y0,X1,Y1,X2,Y2,C0,C1) TRACE X0,Y0,X1,Y1,X2,Y2 W=31 H=31 'W=15 'H=15 CALL CCOP6(C0,C1,X2+9-X0,Y2+8-Y0,W,H,X0-1,Y0,W-X1+8,H-Y1) 'CCOP6(C0,C22,X22,Y22,W,H,CXXX0,CY0,CXXX1,CY1) END SUB SUB COPYO3(X0,Y0,X1,Y1,X2,Y2,C0,C1) TRACE X0,Y0,X1,Y1,X2,Y2 W=31 H=31 'W=15 'H=15 CALL CCOP6(C0,C1,X2+1-X0,Y2+8-Y0,W,H,X0+7,Y0,W-X1,H-Y1) 'CCOP6(C0,C22,X22,Y22,W,H,CXXX0,CY0,CXXX1,CY1) END SUB SUB CLEAR_C(C,S) A=$8000+C*16 FOR IY=0 TO S FILL A+IY*256,16*(S+1) NEXT IY END SUB SUB CCOP(C0,X0,C2,X2) E0=2^X0 / 2^(7-X2) E1=1/E0 A0=$8000+C0*16 A1=$8000+C2*16 POKE A1 ,PEEK(A0)*E0 POKE A1+8 ,PEEK(A0+8)*E0 POKE A1+16,PEEK(A0)*E1 POKE A1+24,PEEK(A0+8)*E1 END SUB SUB CCOP2(C0,X0,C2,X2) X3=X2-X0 E0=2^( -X3) 'E1=2^(8-X3) E1=E0*256 FOR Y=0 TO 7 A0=$8000+C0*16+Y A1=$8000+C2*16+Y POKE A1 ,PEEK(A0 )*E0 POKE A1+8 ,PEEK(A0+8)*E0 POKE A1+16,PEEK(A0 )*E1 POKE A1+24,PEEK(A0+8)*E1 NEXT Y END SUB 'X SIZE UP, AND X SHIFTING SUB CCOP3(C0,X0,C2,X2,S) X3=X2-X0 E0=2^( -X3) 'E1=2^(8-X3) E1=E0*256 FOR X=0 TO S FOR Y=0 TO 7 A0=$8000+(C0+X)*16+Y A1=$8000+(C2+X)*16+Y POKE A1 ,PEEK(A1 ) OR PEEK(A0 )*E0 POKE A1+8 ,PEEK(A1+8 ) OR PEEK(A0+8)*E0 POKE A1+16,PEEK(A1+16) OR PEEK(A0 )*E1 POKE A1+24,PEEK(A1+24) OR PEEK(A0+8)*E1 NEXT Y NEXT X END SUB 'SIZE UP AND X,Y SHIFTING SUB CCOP4(C0,X0,Y0,C2,X2,Y2,S) X3=X2-X0 E0=2^( -X3) 'E1=2^(8-X3) E1=E0*256 'USE A RECTANGLE INSTEAD OF S, W,H IS FINE TOO FOR X=0 TO S FOR YY=0 TO 15 YYY=YY+Y2 A0=$8000+(C0+X)*16+YY+(YY\8)*(256-8) A1=$8000+(C2+X)*16+YYY+(YYY\8)*(256-8) POKE A1 ,PEEK(A1 ) OR PEEK(A0 )*E0 POKE A1+8 ,PEEK(A1+8 ) OR PEEK(A0+8)*E0 POKE A1+16,PEEK(A1+16) OR PEEK(A0 )*E1 POKE A1+24,PEEK(A1+24) OR PEEK(A0+8)*E1 NEXT YY NEXT X END SUB 'SIZE UP AND X,Y SHIFTING AND CROPPING FROM THE END SUB CCOP5(C0,X0,Y0,C2,X2,Y2,S) 'CROP 1: SHIFT UP-LEFT, CROP 'CROP 2: CROP FROM BOTTOM-RIGHT 'BITWISE CROPPING (BITWISE AND) FOR X 'LOGICAL CROPPING FOR UPY X3=X2-X0 E0=2^( -X3) 'E1=2^(8-X3) E1=E0*256 CY=4 CX=(4-X2) 'ADD CX,-INT(CX/8)*8 M0=2^CX-1 M1A=255 XOR (2^MAX(0,MIN(7,CX ))-1) M1B=255 XOR (2^MAX(0,MIN(8,CX+8))-1) 'USE A RECTANGLE INSTEAD OF S, (W,H) IS FINE TOO FOR X=0 TO S FOR YY=0 TO 15-CY YYY=YY+Y2 A0=$8000+(C0+X)*16+YY+(YY\8)*(256-8) A1=$8000+(C2+X)*16+YYY+(YYY\8)*(256-8) IF X=S THEN 'IT SHOULD MOVE TOGETHER WITH X2 'TRACE BIN$(M,8) 'M=255 M2=M1A M3=M1B 'M2=255 '(M0 AND M1) IS THE MASK FOR WHEN (X=0 AND X=S) ELSE M2=255 M3=255 END IF POKE A1 ,PEEK(A1 ) OR ((PEEK(A0 )*E0) AND M2) POKE A1+8 ,PEEK(A1+8 ) OR ((PEEK(A0+8)*E0) AND M2) POKE A1+16,PEEK(A1+16) OR ((PEEK(A0 )*E1) AND M3) POKE A1+24,PEEK(A1+24) OR ((PEEK(A0+8)*E1) AND M3) NEXT YY NEXT X END SUB SUB CCOP55(C0,X0,Y0,C2,X2,Y2,S,CX0,CY0,CX1,CY1) 'CROP 1: SHIFT UP-LEFT, CROP 'CROP 2: CROP FROM BOTTOM-RIGHT 'BITWISE CROPPING (BITWISE AND) FOR X 'LOGICAL CROPPING FOR UPY 'CX0=4 'CY0=4 'CX1=4 'CY1=4 X3=X2-X0 E0=2^( -X3) 'E1=2^(8-X3) E1=E0*256 CXX0=CX0-X2 CXX1=CX1-X2 'ADD CXX1,-INT(CXX1/8)*8 M0A=2^(CXX0)-1 M0B=2^(CXX0+8)-1 M1A=255 XOR (2^MAX(0,MIN(7,CXX1 ))-1) M1B=255 XOR (2^MAX(0,MIN(8,CXX1+8))-1) 'M1A=255 XOR (2^CXX1 -1) 'M1B=255 XOR (2^CXX1+8-1) 'USE A RECTANGLE INSTEAD OF S, (W,H) IS FINE TOO FOR X=0 TO S FOR YY=CY0+Y0 TO 15-CY1 YYY=YY+Y2-Y0 A0=$8000+(C0+X)*16+YY+(YY\8)*(256-8) A1=$8000+(C2+X)*16+YYY+(YYY\8)*(256-8) IF X=S AND X=0 THEN '(M0 AND M1) IS THE MASK FOR WHEN (X=0 AND X=S) M2=M0A AND M1A M3=M0B AND M1B ELSE IF X=S THEN 'IT SHOULD MOVE TOGETHER WITH X2 'TRACE BIN$(M,8) 'M=255 M2=M1A M3=M1B 'M2=255 ELSE IF X=0 THEN M2=M0A M3=M0B ELSE M2=255 M3=255 END IF POKE A1 ,PEEK(A1 ) OR ((PEEK(A0 )*E0) AND M2) POKE A1+8 ,PEEK(A1+8 ) OR ((PEEK(A0+8)*E0) AND M2) POKE A1+16,PEEK(A1+16) OR ((PEEK(A0 )*E1) AND M3) POKE A1+24,PEEK(A1+24) OR ((PEEK(A0+8)*E1) AND M3) NEXT YY NEXT X END SUB SUB COPYO(X0,Y0,X1,Y1,X2,Y2,C0,C1) W=31 H=31 CALL CCOP6(C0,C1,X2+X0,Y2+Y0,W,H,8-X0,8-Y0,W-X1,H-Y1) 'CCOP6(C0,C22,X22,Y22,W,H,CXXX0,CY0,CXXX1,CY1) END SUB 'SIZE UP AND X,Y SHIFTING AND CROPPING FROM THE END AND CROPPING FROM THE START SUB CCOP6(C0,C22,X22,Y22,W,H,CXXX0,CY0,CXXX1,CY1) 'CROP 1: SHIFT UP-LEFT, CROP 'CROP 2: CROP FROM BOTTOM-RIGHT 'BITWISE CROPPING (BITWISE AND) FOR X 'LOGICAL CROPPING FOR UPY 'CX0=4 'CY0=4 'CX1=4 'CY1=4 C2=C22+INT(X22/8)+INT(Y22/8)*16 X2=X22-INT(X22/8)*8 Y2=Y22-INT(Y22/8)*8 CX1=CXXX1-INT(CXXX1/8)*8 CX0=7-(CXXX0-INT(CXXX0/8)*8) X3=X2 E0=2^( -X3) 'E1=2^(8-X3) E1=E0*256 CXX0=CX0-X2 CXX1=CX1-X2 'ADD CXX1,-INT(CXX1/8)*8 M0A=2^(CXX0 )-1 M0B=2^(CXX0+8)-1 M1A=255 XOR (2^MAX(0,MIN(7,CXX1 ))-1) M1B=255 XOR (2^MAX(0,MIN(8,CXX1+8))-1) 'M1A=255 XOR (2^CXX1 -1) 'M1B=255 XOR (2^CXX1+8-1) 'S=W\8 -MAX(0,INT(CXXX1\8)) S=W\8 -INT(CXXX1\8) S00=-1+INT(CXXX0\8) FOR X=S00 TO S FOR YY=CY0 TO H-CY1 YYY=YY+Y2 A0=$8000+(C0+X)*16+YY+(YY\8)*(256-8) A1=$8000+(C2+X)*16+YYY+(YYY\8)*(256-8) IF (MIN(A0,A1)>=$8000) AND MAX(A0,A1)<$9000 THEN IF X=S AND X=S00 THEN M2=M0A AND M1A M3=M0B AND M1B ELSE IF X=S THEN 'IT SHOULD MOVE TOGETHER WITH X2 M2=M1A M3=M1B ELSE IF X=S00 THEN M2=M0A M3=M0B ELSE M2=255 M3=255 END IF POKE A1 ,PEEK(A1 ) OR ((PEEK(A0 )*E0) AND M2) POKE A1+8 ,PEEK(A1+8 ) OR ((PEEK(A0+8)*E0) AND M2) POKE A1+16,PEEK(A1+16) OR ((PEEK(A0 )*E1) AND M3) POKE A1+24,PEEK(A1+24) OR ((PEEK(A0+8)*E1) AND M3) END IF NEXT YY NEXT X END SUB 'TAKES X0,Y0 PARAMETERS SUB CCOP6A(C0,X0,Y0,C22,X22,Y22,W,H,CXXX0,CY0,CXXX1,CY1) 'CROP 1: SHIFT UP-LEFT, CROP 'CROP 2: CROP FROM BOTTOM-RIGHT 'BITWISE CROPPING (BITWISE AND) FOR X 'LOGICAL CROPPING FOR UPY 'CX0=4 'CY0=4 'CX1=4 'CY1=4 C2=C22+INT(X22/8)+INT(Y22/8)*16 X2=X22-INT(X22/8)*8 Y2=Y22-INT(Y22/8)*8 CX1=CXXX1-INT(CXXX1/8)*8 CX0=7-(CXXX0-INT(CXXX0/8)*8) X3=X2-X0 E0=2^( -X3) 'E1=2^(8-X3) E1=E0*256 CXX0=CX0-X2 CXX1=CX1-X2 'ADD CXX1,-INT(CXX1/8)*8 M0A=2^(CXX0 )-1 M0B=2^(CXX0+8)-1 M1A=255 XOR (2^MAX(0,MIN(7,CXX1 ))-1) M1B=255 XOR (2^MAX(0,MIN(8,CXX1+8))-1) 'M1A=255 XOR (2^CXX1 -1) 'M1B=255 XOR (2^CXX1+8-1) 'S=W\8 -MAX(0,INT(CXXX1\8)) S=W\8 -INT(CXXX1\8) S00=-1+INT(CXXX0\8) FOR X=S00 TO S FOR YY=CY0+Y0 TO H-CY1 YYY=YY+Y2-Y0 A0=$8000+(C0+X)*16+YY+(YY\8)*(256-8) A1=$8000+(C2+X)*16+YYY+(YYY\8)*(256-8) IF (MIN(A0,A1)>=$8000) AND MAX(A0,A1)<$9000 THEN IF X=S AND X=S00 THEN M2=M0A AND M1A M3=M0B AND M1B ELSE IF X=S THEN 'IT SHOULD MOVE TOGETHER WITH X2 M2=M1A M3=M1B ELSE IF X=S00 THEN M2=M0A M3=M0B ELSE M2=255 M3=255 END IF POKE A1 ,PEEK(A1 ) OR ((PEEK(A0 )*E0) AND M2) POKE A1+8 ,PEEK(A1+8 ) OR ((PEEK(A0+8)*E0) AND M2) POKE A1+16,PEEK(A1+16) OR ((PEEK(A0 )*E1) AND M3) POKE A1+24,PEEK(A1+24) OR ((PEEK(A0+8)*E1) AND M3) END IF NEXT YY NEXT X END SUB 'BOX COPY SUB CCOP7(C0,X0,Y0,X1,Y1,C2,X2,Y2,S) 'CROP 1: SHIFT UP-LEFT, CROP 'CROP 2: CROP FROM BOTTOM-RIGHT 'BITWISE CROPPING (BITWISE AND) FOR X 'LOGICAL CROPPING FOR UPY CX0=X0 CY0=Y0 CX1=4 CY1=4 X3=X2-X0 E0=2^( -X3) 'E1=2^(8-X3) E1=E0*256 CXX0=CX0-X3 CXX1=CX1-X3 'ADD CXX1,-INT(CXX1/8)*8 M0A=2^(CXX0)-1 M0B=2^(CXX0+8)-1 M1A=255 XOR (2^MAX(0,MIN(7,CXX1 ))-1) M1B=255 XOR (2^MAX(0,MIN(8,CXX1+8))-1) 'M1A=255 XOR (2^CXX1 -1) 'M1B=255 XOR (2^CXX1+8-1) 'USE A RECTANGLE INSTEAD OF S, (W,H) IS FINE TOO FOR X=0 TO S FOR YY=0+CY0 TO 15-CY1 YYY=YY+Y2-Y0 A0=$8000+(C0+X)*16+YY+(YY\8)*(256-8) A1=$8000+(C2+X)*16+YYY+(YYY\8)*(256-8) IF X=S AND X=0 THEN '(M0 AND M1) IS THE MASK FOR WHEN (X=0 AND X=S) M2=M0A AND M1A M3=M0B AND M1B ELSE IF X=S THEN 'IT SHOULD MOVE TOGETHER WITH X2 'TRACE BIN$(M,8) 'M=255 M2=M1A M3=M1B 'M2=255 ELSE IF X=0 THEN M2=M0A M3=M0B ELSE M2=255 M3=255 END IF POKE A1 ,PEEK(A1 ) OR ((PEEK(A0 )*E0) AND M2) POKE A1+8 ,PEEK(A1+8 ) OR ((PEEK(A0+8)*E0) AND M2) POKE A1+16,PEEK(A1+16) OR ((PEEK(A0 )*E1) AND M3) POKE A1+24,PEEK(A1+24) OR ((PEEK(A0+8)*E1) AND M3) NEXT YY NEXT X END SUB 'CALL CHAR_TRANSFORM(C0,C1,DX,DY,15) SUB CHAR_TRANSFORM(C0,C1,DX,DY,S) E0=2^( -DX) E1=E0*256 'USE A RECTANGLE INSTEAD OF S, W,H IS FINE TOO FOR X=0 TO S\8 FOR YY=0 TO 15 YYY=YY+DY A0=$8000+(C0+X)*16+YY+(YY\8)*(256-8) A1=$8000+(C1+X)*16+YYY+(YYY\8)*(256-8) POKE A1 ,PEEK(A1 ) OR PEEK(A0 )*E0 POKE A1+8 ,PEEK(A1+8 ) OR PEEK(A0+8)*E0 POKE A1+16,PEEK(A1+16) OR PEEK(A0 )*E1 POKE A1+24,PEEK(A1+24) OR PEEK(A0+8)*E1 NEXT YY NEXT X END SUB SUB CCOP2G(C0,X0,C2,X2) E0=2^(X0)-X2 E1=2^(8-X2)-X0 FOR Y=0 TO 7 A0=$8000+C0*16+Y A1=$8000+C2*16+Y POKE A1 ,PEEK(A0 )*E0 POKE A1+8 ,PEEK(A0+8)*E0 POKE A1+16,PEEK(A0 )*E1 POKE A1+24,PEEK(A0+8)*E1 NEXT Y END SUB SUB OVERLAY(A,V) POKE A,PEEK(A) OR V END SUB SUB CHAR_COPY(C0,X0,Y0,X1,Y1,C2,X2,Y2) DX=X2-X0 DY=Y2-Y0 E0=2^(X0\8) E1=2^(X2\8) E2=E0/E1 E3=1/E2 FOR XX=X0\8 TO X1\8 FOR YY=Y0 TO Y1 Y=YY+(YY\16)*(256-16) A=$8000+Y+(C2+XX)*16 A1=$8000+Y+(C0+XX)*16 POKE A,PEEK(A) OR PEEK(A1) 'POKE 'POKE 'POKE NEXT YY NEXT XX END SUB #1:MAIN PALETTES 0635393D00383400003C0C00003F3C00 003F2A15003F2A15003F2A15003F2A15 #2:MAIN CHARACTERS 00000000000000000000000000000000 C18000000F3800840000000000077F3C 8301001EFE0303190000000000FFFF18 C1800101030000800000000000030307 8301C0C0C0400001000000000080C0C0 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 80000000000000000000000000000000 8C000000070780C10C000000070F3800 190030F0C0000183180030F0C0000000 80070707030080C10707070703000000 0100C08080000183C0C0C08080000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 C1800000071F3F7F0000000000000E1C 83010000981F1F1F0000000000000706 C180000000FCFCFD0000000000000830 8301000000FFFFFE0000000000000C28 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 7F7F00000C0080C600003F000C000006 3F3F00000271010F0000FF000271000C F9FB0000003F80F00000F100003F0030 FEFC00004C0021136000FC004C002010 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 FF010000000000005501000000000000 FF010000000000005501000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 80808080808080800000000000000000