(     s !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~u !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~s !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHILKJJKLMNNOPPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~/The . type represents a particular crossword. The  crossword's dimensions are specified by  and . 6The contents of the puzzle are given by two arrays of s -   and +. The board arrays are in row-major order < and are numbered from (0,0) to (width-1,height-1). The  @ board represents the current state of play, and as such its A squares may be partially or entirely filled in, correctly or  incorrectly. The " board should have the same basic  layout as the . board (in terms of black vs letter squares), & and should be entirely filled in. ;Various other pieces of data about the puzzle are given bu  , ,  and  , all s. There is an optional timer, which is a number of seconds @ elapsed and a bool that is true if the timer is stopped and  false otherwise.  The field   gives the puzzle's clues. The numbers in this E array correspond to the numbering that would appear on the grid. - To reconstruct this information, see the  function.  The ( type represents a square in a puzzle. $Rebus squares, optionally filled in .Standard letter squares, optionally filled in Black squares The : type enumerates the possible styles of fillable squares. G Currently, there are only two: plain squares and circled squares.            !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOOPPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ hpuz-1.0.2Codec.Game.PuzCodec.Game.Puz.InternalPuzzlewidthheightgridsolutiontitleauthornotes copyrighttimerclueslockedIndexDirDownAcrossSquareRebusLetterBlackStyleCirclePlain numberGrid loadPuzzle savePuzzle stringCksumpuzCksumString'_ puzLockSet'_puzLockedCksumGet'_puzIsLockedGet'_puzSetExtras'_puzGetExtras'_puzHasExtras'_ puzSetTimer'_puzGetTimerStopped'_puzGetTimerElapsed'_ puzHasTimer'_ puzSetRtbl'_ puzGetRtbl'_puzSetRebusCount'_puzGetRebusCount'_ puzSetRebus'_ puzGetRebus'_ puzHasRebus'_ puzSetNotes'_ puzGetNotes'_ puzSetClue'_ puzGetClue'_puzSetClueCount'_puzGetClueCount'_puzSetCopyright'_puzGetCopyright'_puzSetAuthor'_puzGetAuthor'_ puzSetTitle'_ puzGetTitle'_ puzSetGrid'_ puzGetGrid'_puzSetSolution'_puzGetSolution'_puzSetHeight'_puzGetHeight'_ puzSetWidth'_ puzGetWidth'_puzCksumsCommit'_puzCksumsCheck'_puzCksumsCalc'_ puzSize'_ puzSave'_ puzLoad'_ puzCreate'_PuzTypePuzTypeUnknown PuzTypeText PuzTypeBinaryPuzPuzHeadmarshallPuzMaybe marshallPuz boolToCInt alwaysUseInnullIn puzTypeIn zeroShortInpuzInstringInrtblIn cerrToBool cintToBool saveIntToBool stringOut rtblParserrtblOut puzCreatepuzLoadpuzSavepuzSize puzCksumsCalcpuzCksumsCheckpuzCksumsCommit puzGetWidth puzSetWidth puzGetHeight puzSetHeightpuzGetSolutionpuzSetSolution puzGetGrid puzSetGrid puzGetTitle puzSetTitle puzGetAuthor puzSetAuthorpuzGetCopyrightpuzSetCopyrightpuzGetClueCountpuzSetClueCount puzGetClue puzSetClue puzGetNotes puzSetNotes puzHasRebus puzGetRebus puzSetRebuspuzGetRebusCountpuzSetRebusCount puzGetRtbl puzSetRtbl puzHasTimerpuzGetTimerElapsedpuzGetTimerStopped puzSetTimer puzHasExtras puzGetExtras puzSetExtraspuzIsLockedGetpuzLockedCksumGet puzLockSetpuzCksumStringcIntConv withPuzHeadwithPuzErrMsgbaseGHC.BaseString blackChar blankCharextrasBlankCharstyleMap styleMap' charToStyle styleToChar orderClues cucharToChar charToCUChar charToSquaresquareToBoardCharsquareToExtrasChar gridToExtras gridToRebus readBoard boardCharsOut numberClues