<s> """<STR_LIT>""" <EOL> class QRCode : <EOL> PAD0 = <NUM_LIT> <EOL> PAD1 = <NUM_LIT> <EOL> def __init__ ( self ) : <EOL> self . typeNumber = <NUM_LIT:1> <EOL> self . errorCorrectLevel = ErrorCorrectLevel . H <EOL> self . qrDataList = [ ] <EOL> self . modules = [ ] <EOL> self . moduleCount = <NUM_LIT:0> <EOL> def getTypeNumber ( self ) : <EOL> return self . typeNumber <EOL> def setTypeNumber ( self , typeNumber ) : <EOL> self . typeNumber = typeNumber <EOL> def getErrorCorrectLevel ( self ) : <EOL> return self . errorCorrectLevel <EOL> def setErrorCorrectLevel ( self , errorCorrectLevel ) : <EOL> self . errorCorrectLevel = errorCorrectLevel <EOL> def clearData ( self ) : <EOL> self . qrDataList = [ ] <EOL> def addData ( self , data ) : <EOL> self . qrDataList . append ( QR8BitByte ( data ) ) <EOL> def getDataCount ( self ) : <EOL> return len ( self . qrDataList ) <EOL> def getData ( self , index ) : <EOL> return self . qrDataList [ index ] <EOL> def isDark ( self , row , col ) : <EOL> return ( self . modules [ row ] [ col ] if self . modules [ row ] [ col ] != None <EOL> else False ) <EOL> def getModuleCount ( self ) : <EOL> return self . moduleCount <EOL> def make ( self ) : <EOL> self . _make ( False , self . _getBestMaskPattern ( ) ) <EOL> def _getBestMaskPattern ( self ) : <EOL> minLostPoint = <NUM_LIT:0> <EOL> pattern = <NUM_LIT:0> <EOL> for i in range ( <NUM_LIT:8> ) : <EOL> self . _make ( True , i ) <EOL> lostPoint = QRUtil . getLostPoint ( self ) <EOL> if i == <NUM_LIT:0> or minLostPoint > lostPoint : <EOL> minLostPoint = lostPoint <EOL> pattern = i <EOL> return pattern <EOL> def _make ( self , test , maskPattern ) : <EOL> self . moduleCount = self . typeNumber * <NUM_LIT:4> + <NUM_LIT> <EOL> self . modules = [ [ None ] * self . moduleCount <EOL> for i in range ( self . moduleCount ) ] <EOL> self . _setupPositionProbePattern ( <NUM_LIT:0> , <NUM_LIT:0> ) <EOL> self . _setupPositionProbePattern ( self . moduleCount - <NUM_LIT:7> , <NUM_LIT:0> ) <EOL> self . _setupPositionProbePattern ( <NUM_LIT:0> , self . moduleCount - <NUM_LIT:7> ) <EOL> self . _setupPositionAdjustPattern ( ) <EOL> self . _setupTimingPattern ( ) <EOL> self . _setupTypeInfo ( test , maskPattern ) <EOL> if self . typeNumber >= <NUM_LIT:7> : <EOL> self . _setupTypeNumber ( test ) <EOL> data = QRCode . _createData ( <EOL> self . typeNumber , <EOL> self . errorCorrectLevel , <EOL> self . qrDataList ) <EOL> self . _mapData ( data , maskPattern ) <EOL> def _mapData ( self , data , maskPattern ) : <EOL> rows = list ( range ( self . moduleCount ) ) <EOL> cols = [ col - <NUM_LIT:1> if col <= <NUM_LIT:6> else col <EOL> for col in range ( self . moduleCount - <NUM_LIT:1> , <NUM_LIT:0> , - <NUM_LIT:2> ) ] <EOL> maskFunc = QRUtil . getMaskFunction ( maskPattern ) <EOL> byteIndex = <NUM_LIT:0> <EOL> bitIndex = <NUM_LIT:7> <EOL> for col in cols : <EOL> rows . reverse ( ) <EOL> for row in rows : <EOL> for c in range ( <NUM_LIT:2> ) : <EOL> if self . modules [ row ] [ col - c ] == None : <EOL> dark = False <EOL> if byteIndex < len ( data ) : <EOL> dark = ( ( data [ byteIndex ] >> bitIndex ) & <NUM_LIT:1> ) == <NUM_LIT:1> <EOL> if maskFunc ( row , col - c ) : <EOL> dark = not dark <EOL> self . modules [ row ] [ col - c ] = dark <EOL> bitIndex -= <NUM_LIT:1> <EOL> if bitIndex == - <NUM_LIT:1> : <EOL> byteIndex += <NUM_LIT:1> <EOL> bitIndex = <NUM_LIT:7> <EOL> def _setupPositionAdjustPattern ( self ) : <EOL> pos = QRUtil . getPatternPosition ( self . typeNumber ) <EOL> for row in pos : <EOL> for col in pos : <EOL> if self . modules [ row ] [ col ] != None : <EOL> continue <EOL> for r in range ( - <NUM_LIT:2> , <NUM_LIT:3> ) : <EOL> for c in range ( - <NUM_LIT:2> , <NUM_LIT:3> ) : <EOL> self . modules [ row + r ] [ col + c ] = ( <EOL> r == - <NUM_LIT:2> or r == <NUM_LIT:2> or c == - <NUM_LIT:2> or c == <NUM_LIT:2> <EOL> or ( r == <NUM_LIT:0> and c == <NUM_LIT:0> ) ) <EOL> def _setupPositionProbePattern ( self , row , col ) : <EOL> for r in range ( - <NUM_LIT:1> , <NUM_LIT:8> ) : <EOL> for c in range ( - <NUM_LIT:1> , <NUM_LIT:8> ) : <EOL> if ( row + r <= - <NUM_LIT:1> or self . moduleCount <= row + r <EOL> or col + c <= - <NUM_LIT:1> or self . moduleCount <= col + c ) : <EOL> continue <EOL> self . modules [ row + r ] [ col + c ] = ( <EOL> ( <NUM_LIT:0> <= r and r <= <NUM_LIT:6> and ( c == <NUM_LIT:0> or c == <NUM_LIT:6> ) ) <EOL> or ( <NUM_LIT:0> <= c and c <= <NUM_LIT:6> and ( r == <NUM_LIT:0> or r == <NUM_LIT:6> ) ) <EOL> or ( <NUM_LIT:2> <= r and r <= <NUM_LIT:4> and <NUM_LIT:2> <= c and c <= <NUM_LIT:4> ) ) <EOL> def _setupTimingPattern ( self ) : <EOL> for r in range ( <NUM_LIT:8> , self . moduleCount - <NUM_LIT:8> ) : <EOL> if self . modules [ r ] [ <NUM_LIT:6> ] != None : <EOL> continue <EOL> self . modules [ r ] [ <NUM_LIT:6> ] = r % <NUM_LIT:2> == <NUM_LIT:0> <EOL> for c in range ( <NUM_LIT:8> , self . moduleCount - <NUM_LIT:8> ) : <EOL> if self . modules [ <NUM_LIT:6> ] [ c ] != None : <EOL> continue <EOL> self . modules [ <NUM_LIT:6> ] [ c ] = c % <NUM_LIT:2> == <NUM_LIT:0> <EOL> def _setupTypeNumber ( self , test ) : <EOL> bits = QRUtil . getBCHTypeNumber ( self . typeNumber ) <EOL> for i in range ( <NUM_LIT> ) : <EOL> self . modules [ i // <NUM_LIT:3> ] [ i % <NUM_LIT:3> + self . moduleCount - <NUM_LIT:8> - <NUM_LIT:3> ] = ( <EOL> not test and ( ( bits >> i ) & <NUM_LIT:1> ) == <NUM_LIT:1> ) <EOL> for i in range ( <NUM_LIT> ) : <EOL> self . modules [ i % <NUM_LIT:3> + self . moduleCount - <NUM_LIT:8> - <NUM_LIT:3> ] [ i // <NUM_LIT:3> ] = ( <EOL> not test and ( ( bits >> i ) & <NUM_LIT:1> ) == <NUM_LIT:1> ) <EOL> def _setupTypeInfo ( self , test , maskPattern ) : <EOL> data = ( self . errorCorrectLevel << <NUM_LIT:3> ) | maskPattern <EOL> bits = QRUtil . getBCHTypeInfo ( data ) <EOL> for i in range ( <NUM_LIT:15> ) : <EOL> mod = not test and ( ( bits >> i ) & <NUM_LIT:1> ) == <NUM_LIT:1> <EOL> if i < <NUM_LIT:6> : <EOL> self . modules [ i ] [ <NUM_LIT:8> ] = mod <EOL> elif i < <NUM_LIT:8> : <EOL> self . modules [ i + <NUM_LIT:1> ] [ <NUM_LIT:8> ] = mod <EOL> else : <EOL> self . modules [ self . moduleCount - <NUM_LIT:15> + i ] [ <NUM_LIT:8> ] = mod <EOL> for i in range ( <NUM_LIT:15> ) : <EOL> mod = not test and ( ( bits >> i ) & <NUM_LIT:1> ) == <NUM_LIT:1> <EOL> if i < <NUM_LIT:8> : <EOL> self . modules [ <NUM_LIT:8> ] [ self . moduleCount - i - <NUM_LIT:1> ] = mod <EOL> elif i < <NUM_LIT:9> : <EOL> self . modules [ <NUM_LIT:8> ] [ <NUM_LIT:15> - i - <NUM_LIT:1> + <NUM_LIT:1> ] = mod <EOL> else : <EOL> self . modules [ <NUM_LIT:8> ] [ <NUM_LIT:15> - i - <NUM_LIT:1> ] = mod <EOL> self . modules [ self . moduleCount - <NUM_LIT:8> ] [ <NUM_LIT:8> ] = not test <EOL> @ staticmethod <EOL> def _createData ( typeNumber , errorCorrectLevel , dataArray ) : <EOL> rsBlocks = RSBlock . getRSBlocks ( typeNumber , errorCorrectLevel ) <EOL> buffer = BitBuffer ( ) <EOL> for data in dataArray : <EOL> buffer . put ( data . getMode ( ) , <NUM_LIT:4> ) <EOL> buffer . put ( data . getLength ( ) , data . getLengthInBits ( typeNumber ) ) <EOL> data . write ( buffer ) <EOL> totalDataCount = sum ( rsBlock . getDataCount ( ) <EOL> for rsBlock in rsBlocks ) <EOL> if buffer . getLengthInBits ( ) > totalDataCount * <NUM_LIT:8> : <EOL> raise Exception ( '<STR_LIT>' % <EOL> ( buffer . getLengthInBits ( ) , totalDataCount * <NUM_LIT:8> ) ) <EOL> if buffer . getLengthInBits ( ) + <NUM_LIT:4> <= totalDataCount * <NUM_LIT:8> : <EOL> buffer . put ( <NUM_LIT:0> , <NUM_LIT:4> ) <EOL> while buffer . getLengthInBits ( ) % <NUM_LIT:8> != <NUM_LIT:0> : <EOL> buffer . put ( False ) <EOL> while True : <EOL> if buffer . getLengthInBits ( ) >= totalDataCount * <NUM_LIT:8> : <EOL> break <EOL> buffer . put ( QRCode . PAD0 , <NUM_LIT:8> ) <EOL> if buffer . getLengthInBits ( ) >= totalDataCount * <NUM_LIT:8> : <EOL> break <EOL> buffer . put ( QRCode . PAD1 , <NUM_LIT:8> ) <EOL> return QRCode . _createBytes ( buffer , rsBlocks ) <EOL> @ staticmethod <EOL> def _createBytes ( buffer , rsBlocks ) : <EOL> offset = <NUM_LIT:0> <EOL> maxDcCount = <NUM_LIT:0> <EOL> maxEcCount = <NUM_LIT:0> <EOL> dcdata = [ None ] * len ( rsBlocks ) <EOL> ecdata = [ None ] * len ( rsBlocks ) <EOL> for r in range ( len ( rsBlocks ) ) : <EOL> dcCount = rsBlocks [ r ] . getDataCount ( ) <EOL> ecCount = rsBlocks [ r ] . getTotalCount ( ) - dcCount <EOL> maxDcCount = max ( maxDcCount , dcCount ) <EOL> maxEcCount = max ( maxEcCount , ecCount ) <EOL> dcdata [ r ] = [ <NUM_LIT:0> ] * dcCount <EOL> for i in range ( len ( dcdata [ r ] ) ) : <EOL> dcdata [ r ] [ i ] = <NUM_LIT> & buffer . getBuffer ( ) [ i + offset ] <EOL> offset += dcCount <EOL> rsPoly = QRUtil . getErrorCorrectPolynomial ( ecCount ) <EOL> rawPoly = Polynomial ( dcdata [ r ] , rsPoly . getLength ( ) - <NUM_LIT:1> ) <EOL> modPoly = rawPoly . mod ( rsPoly ) <EOL> ecdata [ r ] = [ <NUM_LIT:0> ] * ( rsPoly . getLength ( ) - <NUM_LIT:1> ) <EOL> for i in range ( len ( ecdata [ r ] ) ) : <EOL> modIndex = i + modPoly . getLength ( ) - len ( ecdata [ r ] ) <EOL> ecdata [ r ] [ i ] = modPoly . get ( modIndex ) if modIndex >= <NUM_LIT:0> else <NUM_LIT:0> <EOL> totalCodeCount = sum ( rsBlock . getTotalCount ( ) <EOL> for rsBlock in rsBlocks ) <EOL> data = [ <NUM_LIT:0> ] * totalCodeCount <EOL> index = <NUM_LIT:0> <EOL> for i in range ( maxDcCount ) : <EOL> for r in range ( len ( rsBlocks ) ) : <EOL> if i < len ( dcdata [ r ] ) : <EOL> data [ index ] = dcdata [ r ] [ i ] <EOL> index += <NUM_LIT:1> <EOL> for i in range ( maxEcCount ) : <EOL> for r in range ( len ( rsBlocks ) ) : <EOL> if i < len ( ecdata [ r ] ) : <EOL> data [ index ] = ecdata [ r ] [ i ] <EOL> index += <NUM_LIT:1> <EOL> return data <EOL> @ staticmethod <EOL> def getMinimumQRCode ( data , errorCorrectLevel ) : <EOL> mode = Mode . MODE_8BIT_BYTE <EOL> qr = QRCode ( ) <EOL> qr . setErrorCorrectLevel ( errorCorrectLevel ) <EOL> qr . addData ( data ) <EOL> length = qr . getData ( <NUM_LIT:0> ) . getLength ( ) <EOL> for typeNumber in range ( <NUM_LIT:1> , <NUM_LIT:11> ) : <EOL> if length <= QRUtil . getMaxLength ( <EOL> typeNumber , mode , errorCorrectLevel ) : <EOL> qr . setTypeNumber ( typeNumber ) <EOL> break <EOL> qr . make ( ) <EOL> return qr <EOL> class Mode : <EOL> MODE_NUMBER = <NUM_LIT:1> << <NUM_LIT:0> <EOL> MODE_ALPHA_NUM = <NUM_LIT:1> << <NUM_LIT:1> <EOL> MODE_8BIT_BYTE = <NUM_LIT:1> << <NUM_LIT:2> <EOL> MODE_KANJI = <NUM_LIT:1> << <NUM_LIT:3> <EOL> class ErrorCorrectLevel : <EOL> L = <NUM_LIT:1> <EOL> M = <NUM_LIT:0> <EOL> Q = <NUM_LIT:3> <EOL> H = <NUM_LIT:2> <EOL> class MaskPattern : <EOL> PATTERN000 = <NUM_LIT:0> <EOL> PATTERN001 = <NUM_LIT:1> <EOL> PATTERN010 = <NUM_LIT:2> <EOL> PATTERN011 = <NUM_LIT:3> <EOL> PATTERN100 = <NUM_LIT:4> <EOL> PATTERN101 = <NUM_LIT:5> <EOL> PATTERN110 = <NUM_LIT:6> <EOL> PATTERN111 = <NUM_LIT:7> <EOL> class QRUtil : <EOL> @ staticmethod <EOL> def getPatternPosition ( typeNumber ) : <EOL> return QRUtil . PATTERN_POSITION_TABLE [ typeNumber - <NUM_LIT:1> ] <EOL> PATTERN_POSITION_TABLE = [ <EOL> [ ] , <EOL> [ <NUM_LIT:6> , <NUM_LIT> ] , <EOL> [ <NUM_LIT:6> , <NUM_LIT> ] , <EOL> [ <NUM_LIT:6> , <NUM_LIT> ] , <EOL> [ <NUM_LIT:6> , <NUM_LIT:30> ] , <EOL> [ <NUM_LIT:6> , <NUM_LIT> ] , <EOL> [ <NUM_LIT:6> , <NUM_LIT> , <NUM_LIT> ] , <EOL> [ <NUM_LIT:6> , <NUM_LIT> , <NUM_LIT> ] , <EOL> [ <NUM_LIT:6> , <NUM_LIT> , <NUM_LIT> ] , <EOL> [ <NUM_LIT:6> , <NUM_LIT> , <NUM_LIT:50> ] , <EOL> [ <NUM_LIT:6> , <NUM_LIT:30> , <NUM_LIT> ] , <EOL> [ <NUM_LIT:6> , <NUM_LIT:32> , <NUM_LIT> ] , <EOL> [ <NUM_LIT:6> , <NUM_LIT> , <NUM_LIT> ] , <EOL> [ <NUM_LIT:6> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ] , <EOL> [ <NUM_LIT:6> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ] , <EOL> [ <NUM_LIT:6> , <NUM_LIT> , <NUM_LIT:50> , <NUM_LIT> ] , <EOL> [ <NUM_LIT:6> , <NUM_LIT:30> , <NUM_LIT> , <NUM_LIT> ] , <EOL> [ <NUM_LIT:6> , <NUM_LIT:30> , <NUM_LIT> , <NUM_LIT> ] , <EOL> [ <NUM_LIT:6> , <NUM_LIT:30> , <NUM_LIT> , <NUM_LIT> ] , <EOL> [ <NUM_LIT:6> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ] , <EOL> [ <NUM_LIT:6> , <NUM_LIT> , <NUM_LIT:50> , <NUM_LIT> , <NUM_LIT> ] , <EOL> [ <NUM_LIT:6> , <NUM_LIT> , <NUM_LIT:50> , <NUM_LIT> , <NUM_LIT> ] , <EOL> [ <NUM_LIT:6> , <NUM_LIT:30> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ] , <EOL> [ <NUM_LIT:6> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ] , <EOL> [ <NUM_LIT:6> , <NUM_LIT:32> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ] , <EOL> [ <NUM_LIT:6> , <NUM_LIT:30> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ] , <EOL> [ <NUM_LIT:6> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ] , <EOL> [ <NUM_LIT:6> , <NUM_LIT> , <NUM_LIT:50> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ] , <EOL> [ <NUM_LIT:6> , <NUM_LIT:30> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ] , <EOL> [ <NUM_LIT:6> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ] , <EOL> [ <NUM_LIT:6> , <NUM_LIT:30> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ] , <EOL> [ <NUM_LIT:6> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ] , <EOL> [ <NUM_LIT:6> , <NUM_LIT:30> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ] , <EOL> [ <NUM_LIT:6> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ] , <EOL> [ <NUM_LIT:6> , <NUM_LIT:30> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ] , <EOL> [ <NUM_LIT:6> , <NUM_LIT> , <NUM_LIT:50> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ] , <EOL> [ <NUM_LIT:6> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ] , <EOL> [ <NUM_LIT:6> , <NUM_LIT:32> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ] , <EOL> [ <NUM_LIT:6> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ] , <EOL> [ <NUM_LIT:6> , <NUM_LIT:30> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ] <EOL> ] <EOL> MAX_LENGTH = [ <EOL> [ [ <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT:10> ] , [ <NUM_LIT> , <NUM_LIT:20> , <NUM_LIT> , <NUM_LIT:8> ] , [ <NUM_LIT> , <NUM_LIT:16> , <NUM_LIT:11> , <NUM_LIT:7> ] , [ <NUM_LIT> , <NUM_LIT:10> , <NUM_LIT:7> , <NUM_LIT:4> ] ] , <EOL> [ [ <NUM_LIT> , <NUM_LIT> , <NUM_LIT:32> , <NUM_LIT:20> ] , [ <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT:16> ] , [ <NUM_LIT> , <NUM_LIT> , <NUM_LIT:20> , <NUM_LIT:12> ] , [ <NUM_LIT> , <NUM_LIT:20> , <NUM_LIT> , <NUM_LIT:8> ] ] , <EOL> [ [ <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT:32> ] , [ <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ] , [ <NUM_LIT> , <NUM_LIT> , <NUM_LIT:32> , <NUM_LIT:20> ] , [ <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT:15> ] ] , <EOL> [ [ <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ] , [ <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ] , [ <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ] , [ <NUM_LIT> , <NUM_LIT:50> , <NUM_LIT> , <NUM_LIT> ] ] , <EOL> [ [ <NUM_LIT:255> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ] , [ <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ] , [ <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ] , [ <NUM_LIT> , <NUM_LIT:64> , <NUM_LIT> , <NUM_LIT> ] ] , <EOL> [ [ <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ] , [ <NUM_LIT:255> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ] , [ <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ] , [ <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ] ] , <EOL> [ [ <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ] , [ <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ] , [ <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ] , [ <NUM_LIT> , <NUM_LIT> , <NUM_LIT:64> , <NUM_LIT> ] ] , <EOL> [ [ <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ] , [ <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ] , [ <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ] , [ <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ] ] , <EOL> [ [ <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ] , [ <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ] , [ <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ] , [ <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ] ] , <EOL> [ [ <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ] , [ <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ] , [ <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ] , [ <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ] ] <EOL> ] <EOL> @ staticmethod <EOL> def getMaxLength ( typeNumber , mode , errorCorrectLevel ) : <EOL> t = typeNumber - <NUM_LIT:1> <EOL> e = { <EOL> ErrorCorrectLevel . L : <NUM_LIT:0> , <EOL> ErrorCorrectLevel . M : <NUM_LIT:1> , <EOL> ErrorCorrectLevel . Q : <NUM_LIT:2> , <EOL> ErrorCorrectLevel . H : <NUM_LIT:3> <EOL> } [ errorCorrectLevel ] <EOL> m = { <EOL> Mode . MODE_NUMBER : <NUM_LIT:0> , <EOL> Mode . MODE_ALPHA_NUM : <NUM_LIT:1> , <EOL> Mode . MODE_8BIT_BYTE : <NUM_LIT:2> , <EOL> Mode . MODE_KANJI : <NUM_LIT:3> <EOL> } [ mode ] <EOL> return QRUtil . MAX_LENGTH [ t ] [ e ] [ m ] <EOL> @ staticmethod <EOL> def getErrorCorrectPolynomial ( errorCorrectLength ) : <EOL> a = Polynomial ( [ <NUM_LIT:1> ] ) <EOL> for i in range ( errorCorrectLength ) : <EOL> a = a . multiply ( Polynomial ( [ <NUM_LIT:1> , QRMath . gexp ( i ) ] ) ) <EOL> return a <EOL> @ staticmethod <EOL> def getMaskFunction ( maskPattern ) : <EOL> return { <EOL> MaskPattern . PATTERN000 : <EOL> lambda i , j : ( i + j ) % <NUM_LIT:2> == <NUM_LIT:0> , <EOL> MaskPattern . PATTERN001 : <EOL> lambda i , j : i % <NUM_LIT:2> == <NUM_LIT:0> , <EOL> MaskPattern . PATTERN010 : <EOL> lambda i , j : j % <NUM_LIT:3> == <NUM_LIT:0> , <EOL> MaskPattern . PATTERN011 : <EOL> lambda i , j : ( i + j ) % <NUM_LIT:3> == <NUM_LIT:0> , <EOL> MaskPattern . PATTERN100 : <EOL> lambda i , j : ( i // <NUM_LIT:2> + j // <NUM_LIT:3> ) % <NUM_LIT:2> == <NUM_LIT:0> , <EOL> MaskPattern . PATTERN101 : <EOL> lambda i , j : ( i * j ) % <NUM_LIT:2> + ( i * j ) % <NUM_LIT:3> == <NUM_LIT:0> , <EOL> MaskPattern . PATTERN110 : <EOL> lambda i , j : ( ( i * j ) % <NUM_LIT:2> + ( i * j ) % <NUM_LIT:3> ) % <NUM_LIT:2> == <NUM_LIT:0> , <EOL> MaskPattern . PATTERN111 : <EOL> lambda i , j : ( ( i * j ) % <NUM_LIT:3> + ( i + j ) % <NUM_LIT:2> ) % <NUM_LIT:2> == <NUM_LIT:0> <EOL> } [ maskPattern ] <EOL> @ staticmethod <EOL> def getLostPoint ( qrcode ) : <EOL> moduleCount = qrcode . getModuleCount ( ) <EOL> lostPoint = <NUM_LIT:0> <EOL> for row in range ( moduleCount ) : <EOL> for col in range ( moduleCount ) : <EOL> sameCount = <NUM_LIT:0> <EOL> dark = qrcode . isDark ( row , col ) <EOL> for r in range ( - <NUM_LIT:1> , <NUM_LIT:2> ) : <EOL> if row + r < <NUM_LIT:0> or moduleCount <= row + r : <EOL> continue <EOL> for c in range ( - <NUM_LIT:1> , <NUM_LIT:2> ) : <EOL> if col + c < <NUM_LIT:0> or moduleCount <= col + c : <EOL> continue <EOL> if r == <NUM_LIT:0> and c == <NUM_LIT:0> : <EOL> continue <EOL> if dark == qrcode . isDark ( row + r , col + c ) : <EOL> sameCount += <NUM_LIT:1> <EOL> if sameCount > <NUM_LIT:5> : <EOL> lostPoint += ( <NUM_LIT:3> + sameCount - <NUM_LIT:5> ) <EOL> for row in range ( moduleCount - <NUM_LIT:1> ) : <EOL> for col in range ( moduleCount - <NUM_LIT:1> ) : <EOL> count = <NUM_LIT:0> <EOL> if qrcode . isDark ( row , col ) : <EOL> count += <NUM_LIT:1> <EOL> if qrcode . isDark ( row + <NUM_LIT:1> , col ) : <EOL> count += <NUM_LIT:1> <EOL> if qrcode . isDark ( row , col + <NUM_LIT:1> ) : <EOL> count += <NUM_LIT:1> <EOL> if qrcode . isDark ( row + <NUM_LIT:1> , col + <NUM_LIT:1> ) : <EOL> count += <NUM_LIT:1> <EOL> if count == <NUM_LIT:0> or count == <NUM_LIT:4> : <EOL> lostPoint += <NUM_LIT:3> <EOL> for row in range ( moduleCount ) : <EOL> for col in range ( moduleCount - <NUM_LIT:6> ) : <EOL> if ( qrcode . isDark ( row , col ) <EOL> and not qrcode . isDark ( row , col + <NUM_LIT:1> ) <EOL> and qrcode . isDark ( row , col + <NUM_LIT:2> ) <EOL> and qrcode . isDark ( row , col + <NUM_LIT:3> ) <EOL> and qrcode . isDark ( row , col + <NUM_LIT:4> ) <EOL> and not qrcode . isDark ( row , col + <NUM_LIT:5> ) <EOL> and qrcode . isDark ( row , col + <NUM_LIT:6> ) ) : <EOL> lostPoint += <NUM_LIT> <EOL> for col in range ( moduleCount ) : <EOL> for row in range ( moduleCount - <NUM_LIT:6> ) : <EOL> if ( qrcode . isDark ( row , col ) <EOL> and not qrcode . isDark ( row + <NUM_LIT:1> , col ) <EOL> and qrcode . isDark ( row + <NUM_LIT:2> , col ) <EOL> and qrcode . isDark ( row + <NUM_LIT:3> , col ) <EOL> and qrcode . isDark ( row + <NUM_LIT:4> , col ) <EOL> and not qrcode . isDark ( row + <NUM_LIT:5> , col ) <EOL> and qrcode . isDark ( row + <NUM_LIT:6> , col ) ) : <EOL> lostPoint += <NUM_LIT> <EOL> darkCount = <NUM_LIT:0> <EOL> for col in range ( moduleCount ) : <EOL> for row in range ( moduleCount ) : <EOL> if qrcode . isDark ( row , col ) : <EOL> darkCount += <NUM_LIT:1> <EOL> ratio = abs ( <NUM_LIT:100> * darkCount // moduleCount // moduleCount - <NUM_LIT:50> ) // <NUM_LIT:5> <EOL> lostPoint += ratio * <NUM_LIT:10> <EOL> return lostPoint <EOL> G15 = ( ( <NUM_LIT:1> << <NUM_LIT:10> ) | ( <NUM_LIT:1> << <NUM_LIT:8> ) | ( <NUM_LIT:1> << <NUM_LIT:5> ) | ( <NUM_LIT:1> << <NUM_LIT:4> ) | <EOL> ( <NUM_LIT:1> << <NUM_LIT:2> ) | ( <NUM_LIT:1> << <NUM_LIT:1> ) | ( <NUM_LIT:1> << <NUM_LIT:0> ) ) <EOL> G18 = ( ( <NUM_LIT:1> << <NUM_LIT:12> ) | ( <NUM_LIT:1> << <NUM_LIT:11> ) | ( <NUM_LIT:1> << <NUM_LIT:10> ) | ( <NUM_LIT:1> << <NUM_LIT:9> ) | <EOL> ( <NUM_LIT:1> << <NUM_LIT:8> ) | ( <NUM_LIT:1> << <NUM_LIT:5> ) | ( <NUM_LIT:1> << <NUM_LIT:2> ) | ( <NUM_LIT:1> << <NUM_LIT:0> ) ) <EOL> G15_MASK = ( <NUM_LIT:1> << <NUM_LIT> ) | ( <NUM_LIT:1> << <NUM_LIT:12> ) | ( <NUM_LIT:1> << <NUM_LIT:10> ) | ( <NUM_LIT:1> << <NUM_LIT:4> ) | ( <NUM_LIT:1> << <NUM_LIT:1> ) <EOL> @ staticmethod <EOL> def getBCHTypeInfo ( data ) : <EOL> d = data << <NUM_LIT:10> <EOL> while QRUtil . getBCHDigit ( d ) - QRUtil . getBCHDigit ( QRUtil . G15 ) >= <NUM_LIT:0> : <EOL> d ^= ( QRUtil . G15 << ( QRUtil . getBCHDigit ( d ) - <EOL> QRUtil . getBCHDigit ( QRUtil . G15 ) ) ) <EOL> return ( ( data << <NUM_LIT:10> ) | d ) ^ QRUtil . G15_MASK <EOL> @ staticmethod <EOL> def getBCHTypeNumber ( data ) : <EOL> d = data << <NUM_LIT:12> <EOL> while QRUtil . getBCHDigit ( d ) - QRUtil . getBCHDigit ( QRUtil . G18 ) >= <NUM_LIT:0> : <EOL> d ^= ( QRUtil . G18 << ( QRUtil . getBCHDigit ( d ) - <EOL> QRUtil . getBCHDigit ( QRUtil . G18 ) ) ) <EOL> return ( data << <NUM_LIT:12> ) | d <EOL> @ staticmethod <EOL> def getBCHDigit ( data ) : <EOL> digit = <NUM_LIT:0> <EOL> while data != <NUM_LIT:0> : <EOL> digit += <NUM_LIT:1> <EOL> data >>= <NUM_LIT:1> <EOL> return digit <EOL> @ staticmethod <EOL> def stringToBytes ( s ) : <EOL> return [ ord ( c ) & <NUM_LIT> for c in s ] <EOL> class QR8BitByte : <EOL> def __init__ ( self , data ) : <EOL> self . mode = Mode . MODE_8BIT_BYTE <EOL> self . data = data <EOL> def getMode ( self ) : <EOL> return self . mode <EOL> def getData ( self ) : <EOL> return self . data <EOL> '''<STR_LIT>''' <EOL> def write ( self , buffer ) : <EOL> data = QRUtil . stringToBytes ( self . getData ( ) ) <EOL> for d in data : <EOL> buffer . put ( d , <NUM_LIT:8> ) <EOL> def getLength ( self ) : <EOL> return len ( QRUtil . stringToBytes ( self . getData ( ) ) ) <EOL> def getLengthInBits ( self , type ) : <EOL> if <NUM_LIT:1> <= type and type < <NUM_LIT:10> : <EOL> return { <EOL> Mode . MODE_NUMBER : <NUM_LIT:10> , <EOL> Mode . MODE_ALPHA_NUM : <NUM_LIT:9> , <EOL> Mode . MODE_8BIT_BYTE : <NUM_LIT:8> , <EOL> Mode . MODE_KANJI : <NUM_LIT:8> <EOL> } [ self . mode ] <EOL> elif type < <NUM_LIT> : <EOL> return { <EOL> Mode . MODE_NUMBER : <NUM_LIT:12> , <EOL> Mode . MODE_ALPHA_NUM : <NUM_LIT:11> , <EOL> Mode . MODE_8BIT_BYTE : <NUM_LIT:16> , <EOL> Mode . MODE_KANJI : <NUM_LIT:10> <EOL> } [ self . mode ] <EOL> elif type < <NUM_LIT> : <EOL> return { <EOL> Mode . MODE_NUMBER : <NUM_LIT> , <EOL> Mode . MODE_ALPHA_NUM : <NUM_LIT> , <EOL> Mode . MODE_8BIT_BYTE : <NUM_LIT:16> , <EOL> Mode . MODE_KANJI : <NUM_LIT:12> <EOL> } [ self . mode ] <EOL> else : <EOL> raise Exception ( '<STR_LIT>' % type ) <EOL> class QRMath : <EOL> EXP_TABLE = None <EOL> LOG_TABLE = None <EOL> @ staticmethod <EOL> def _init ( ) : <EOL> QRMath . EXP_TABLE = [ <NUM_LIT:0> ] * <NUM_LIT> <EOL> for i in range ( <NUM_LIT> ) : <EOL> QRMath . EXP_TABLE [ i ] = ( <NUM_LIT:1> << i if i < <NUM_LIT:8> else <EOL> QRMath . EXP_TABLE [ i - <NUM_LIT:4> ] ^ QRMath . EXP_TABLE [ i - <NUM_LIT:5> ] ^ <EOL> QRMath . EXP_TABLE [ i - <NUM_LIT:6> ] ^ QRMath . EXP_TABLE [ i - <NUM_LIT:8> ] ) <EOL> QRMath . LOG_TABLE = [ <NUM_LIT:0> ] * <NUM_LIT> <EOL> for i in range ( <NUM_LIT:255> ) : <EOL> QRMath . LOG_TABLE [ QRMath . EXP_TABLE [ i ] ] = i <EOL> @ staticmethod <EOL> def glog ( n ) : <EOL> if n < <NUM_LIT:1> : <EOL> raise Exception ( '<STR_LIT>' % n ) <EOL> return QRMath . LOG_TABLE [ n ] <EOL> @ staticmethod <EOL> def gexp ( n ) : <EOL> while n < <NUM_LIT:0> : <EOL> n += <NUM_LIT:255> <EOL> while n >= <NUM_LIT> : <EOL> n -= <NUM_LIT:255> <EOL> return QRMath . EXP_TABLE [ n ] <EOL> QRMath . _init ( ) <EOL> class Polynomial : <EOL> def __init__ ( self , num , shift = <NUM_LIT:0> ) : <EOL> offset = <NUM_LIT:0> <EOL> length = len ( num ) <EOL> while offset < length and num [ offset ] == <NUM_LIT:0> : <EOL> offset += <NUM_LIT:1> <EOL> self . num = num [ offset : ] + [ <NUM_LIT:0> ] * shift <EOL> def get ( self , index ) : <EOL> return self . num [ index ] <EOL> def getLength ( self ) : <EOL> return len ( self . num ) <EOL> def __repr__ ( self ) : <EOL> return '<STR_LIT:U+002C>' . join ( [ str ( self . get ( i ) ) <EOL> for i in range ( self . getLength ( ) ) ] ) <EOL> def toLogString ( self ) : <EOL> return '<STR_LIT:U+002C>' . join ( [ str ( QRMath . glog ( self . get ( i ) ) ) <EOL> for i in range ( self . getLength ( ) ) ] ) <EOL> def multiply ( self , e ) : <EOL> num = [ <NUM_LIT:0> ] * ( self . getLength ( ) + e . getLength ( ) - <NUM_LIT:1> ) <EOL> for i in range ( self . getLength ( ) ) : <EOL> for j in range ( e . getLength ( ) ) : <EOL> num [ i + j ] ^= QRMath . gexp ( QRMath . glog ( self . get ( i ) ) + <EOL> QRMath . glog ( e . get ( j ) ) ) <EOL> return Polynomial ( num ) <EOL> def mod ( self , e ) : <EOL> if self . getLength ( ) - e . getLength ( ) < <NUM_LIT:0> : <EOL> return self <EOL> ratio = QRMath . glog ( self . get ( <NUM_LIT:0> ) ) - QRMath . glog ( e . get ( <NUM_LIT:0> ) ) <EOL> num = self . num [ : ] <EOL> for i in range ( e . getLength ( ) ) : <EOL> num [ i ] ^= QRMath . gexp ( QRMath . glog ( e . get ( i ) ) + ratio ) <EOL> return Polynomial ( num ) . mod ( e ) <EOL> class RSBlock : <EOL> RS_BLOCK_TABLE = [ <EOL> [ <NUM_LIT:1> , <NUM_LIT> , <NUM_LIT> ] , <EOL> [ <NUM_LIT:1> , <NUM_LIT> , <NUM_LIT:16> ] , <EOL> [ <NUM_LIT:1> , <NUM_LIT> , <NUM_LIT> ] , <EOL> [ <NUM_LIT:1> , <NUM_LIT> , <NUM_LIT:9> ] , <EOL> [ <NUM_LIT:1> , <NUM_LIT> , <NUM_LIT> ] , <EOL> [ <NUM_LIT:1> , <NUM_LIT> , <NUM_LIT> ] , <EOL> [ <NUM_LIT:1> , <NUM_LIT> , <NUM_LIT> ] , <EOL> [ <NUM_LIT:1> , <NUM_LIT> , <NUM_LIT:16> ] , <EOL> [ <NUM_LIT:1> , <NUM_LIT> , <NUM_LIT> ] , <EOL> [ <NUM_LIT:1> , <NUM_LIT> , <NUM_LIT> ] , <EOL> [ <NUM_LIT:2> , <NUM_LIT> , <NUM_LIT> ] , <EOL> [ <NUM_LIT:2> , <NUM_LIT> , <NUM_LIT> ] , <EOL> [ <NUM_LIT:1> , <NUM_LIT:100> , <NUM_LIT> ] , <EOL> [ <NUM_LIT:2> , <NUM_LIT:50> , <NUM_LIT:32> ] , <EOL> [ <NUM_LIT:2> , <NUM_LIT:50> , <NUM_LIT> ] , <EOL> [ <NUM_LIT:4> , <NUM_LIT> , <NUM_LIT:9> ] , <EOL> [ <NUM_LIT:1> , <NUM_LIT> , <NUM_LIT> ] , <EOL> [ <NUM_LIT:2> , <NUM_LIT> , <NUM_LIT> ] , <EOL> [ <NUM_LIT:2> , <NUM_LIT> , <NUM_LIT:15> , <NUM_LIT:2> , <NUM_LIT> , <NUM_LIT:16> ] , <EOL> [ <NUM_LIT:2> , <NUM_LIT> , <NUM_LIT:11> , <NUM_LIT:2> , <NUM_LIT> , <NUM_LIT:12> ] , <EOL> [ <NUM_LIT:2> , <NUM_LIT> , <NUM_LIT> ] , <EOL> [ <NUM_LIT:4> , <NUM_LIT> , <NUM_LIT> ] , <EOL> [ <NUM_LIT:4> , <NUM_LIT> , <NUM_LIT> ] , <EOL> [ <NUM_LIT:4> , <NUM_LIT> , <NUM_LIT:15> ] , <EOL> [ <NUM_LIT:2> , <NUM_LIT> , <NUM_LIT> ] , <EOL> [ <NUM_LIT:4> , <NUM_LIT> , <NUM_LIT> ] , <EOL> [ <NUM_LIT:2> , <NUM_LIT:32> , <NUM_LIT> , <NUM_LIT:4> , <NUM_LIT> , <NUM_LIT:15> ] , <EOL> [ <NUM_LIT:4> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT:1> , <NUM_LIT> , <NUM_LIT> ] , <EOL> [ <NUM_LIT:2> , <NUM_LIT> , <NUM_LIT> ] , <EOL> [ <NUM_LIT:2> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT:2> , <NUM_LIT> , <NUM_LIT> ] , <EOL> [ <NUM_LIT:4> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT:2> , <NUM_LIT> , <NUM_LIT> ] , <EOL> [ <NUM_LIT:4> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT:2> , <NUM_LIT> , <NUM_LIT:15> ] , <EOL> [ <NUM_LIT:2> , <NUM_LIT> , <NUM_LIT> ] , <EOL> [ <NUM_LIT:3> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT:2> , <NUM_LIT> , <NUM_LIT> ] , <EOL> [ <NUM_LIT:4> , <NUM_LIT> , <NUM_LIT:16> , <NUM_LIT:4> , <NUM_LIT> , <NUM_LIT> ] , <EOL> [ <NUM_LIT:4> , <NUM_LIT> , <NUM_LIT:12> , <NUM_LIT:4> , <NUM_LIT> , <NUM_LIT> ] , <EOL> [ <NUM_LIT:2> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT:2> , <NUM_LIT> , <NUM_LIT> ] , <EOL> [ <NUM_LIT:4> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT:1> , <NUM_LIT> , <NUM_LIT> ] , <EOL> [ <NUM_LIT:6> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT:2> , <NUM_LIT> , <NUM_LIT:20> ] , <EOL> [ <NUM_LIT:6> , <NUM_LIT> , <NUM_LIT:15> , <NUM_LIT:2> , <NUM_LIT> , <NUM_LIT:16> ] <EOL> ] <EOL> def __init__ ( self , totalCount , dataCount ) : <EOL> self . totalCount = totalCount <EOL> self . dataCount = dataCount <EOL> def getDataCount ( self ) : <EOL> return self . dataCount <EOL> def getTotalCount ( self ) : <EOL> return self . totalCount <EOL> def __repr__ ( self ) : <EOL> return ( '<STR_LIT>' % ( self . totalCount , self . dataCount ) ) <EOL> @ staticmethod <EOL> def getRSBlocks ( typeNumber , errorCorrectLevel ) : <EOL> rsBlock = RSBlock . getRsBlockTable ( typeNumber , errorCorrectLevel ) <EOL> length = len ( rsBlock ) // <NUM_LIT:3> <EOL> list = [ ] <EOL> for i in range ( length ) : <EOL> count = rsBlock [ i * <NUM_LIT:3> + <NUM_LIT:0> ] <EOL> totalCount = rsBlock [ i * <NUM_LIT:3> + <NUM_LIT:1> ] <EOL> dataCount = rsBlock [ i * <NUM_LIT:3> + <NUM_LIT:2> ] <EOL> list += [ RSBlock ( totalCount , dataCount ) ] * count <EOL> return list <EOL> @ staticmethod <EOL> def getRsBlockTable ( typeNumber , errorCorrectLevel ) : <EOL> return { <EOL> ErrorCorrectLevel . L : <EOL> RSBlock . RS_BLOCK_TABLE [ ( typeNumber - <NUM_LIT:1> ) * <NUM_LIT:4> + <NUM_LIT:0> ] , <EOL> ErrorCorrectLevel . M : <EOL> RSBlock . RS_BLOCK_TABLE [ ( typeNumber - <NUM_LIT:1> ) * <NUM_LIT:4> + <NUM_LIT:1> ] , <EOL> ErrorCorrectLevel . Q : <EOL> RSBlock . RS_BLOCK_TABLE [ ( typeNumber - <NUM_LIT:1> ) * <NUM_LIT:4> + <NUM_LIT:2> ] , <EOL> ErrorCorrectLevel . H : <EOL> RSBlock . RS_BLOCK_TABLE [ ( typeNumber - <NUM_LIT:1> ) * <NUM_LIT:4> + <NUM_LIT:3> ] <EOL> } [ errorCorrectLevel ] <EOL> class BitBuffer : <EOL> def __init__ ( self , inclements = <NUM_LIT:32> ) : <EOL> self . inclements = inclements <EOL> self . buffer = [ <NUM_LIT:0> ] * self . inclements <EOL> self . length = <NUM_LIT:0> <EOL> def getBuffer ( self ) : <EOL> return self . buffer <EOL> def getLengthInBits ( self ) : <EOL> return self . length <EOL> def get ( self , index ) : <EOL> return ( ( self . buffer [ index // <NUM_LIT:8> ] >> ( <NUM_LIT:7> - index % <NUM_LIT:8> ) ) & <NUM_LIT:1> ) == <NUM_LIT:1> <EOL> def putBit ( self , bit ) : <EOL> if self . length == len ( self . buffer ) * <NUM_LIT:8> : <EOL> self . buffer += [ <NUM_LIT:0> ] * self . inclements <EOL> if bit : <EOL> self . buffer [ self . length // <NUM_LIT:8> ] |= ( <NUM_LIT> >> ( self . length % <NUM_LIT:8> ) ) <EOL> self . length += <NUM_LIT:1> <EOL> def put ( self , num , length ) : <EOL> for i in range ( length ) : <EOL> self . putBit ( ( ( num >> ( length - i - <NUM_LIT:1> ) ) & <NUM_LIT:1> ) == <NUM_LIT:1> ) <EOL> def __repr__ ( self ) : <EOL> return '<STR_LIT>' . join ( '<STR_LIT:1>' if self . get ( i ) else '<STR_LIT:0>' <EOL> for i in range ( self . getLengthInBits ( ) ) ) </s>
