diff --git a/BaseUnit.cpp b/BaseUnit.cpp index 8de5a05..7831c16 100644 --- a/BaseUnit.cpp +++ b/BaseUnit.cpp @@ -37,12 +37,26 @@ *********************************************************************/ BaseUnit::BaseUnit(void) : _hp(0), -_bAlive(false), +_alive(false), _x(0), _y(0) { } +/*****************************************************************//** + * + * \brief This function is executed when user wants to create + * a new object derived from BaseUnit, and this function + * sets default parameters for a BaseUnit abstract object. + * + *********************************************************************/ +void BaseUnit::create(const uint16_t x, const uint16_t y) +{ + _alive = true; + _x = x; + _y = y; +} + /*****************************************************************//** * * \brief Periodical handler for BaseUnit class. diff --git a/BaseUnit.h b/BaseUnit.h index 4ce1186..aa9e16a 100644 --- a/BaseUnit.h +++ b/BaseUnit.h @@ -33,12 +33,13 @@ class BaseUnit public: explicit BaseUnit(); void handler(void); + void create(const uint16_t x, const uint16_t y); protected: uint16_t _hp; /**< Health points. */ - bool _bAlive; /**< Alive flag. */ - uint8_t _x; /**< X coordinate inside map. */ - uint8_t _y; /**< Y coordinate inside map. */ + bool _alive; /**< Alive flag. */ + uint16_t _x; /**< X coordinate inside map. */ + uint16_t _y; /**< Y coordinate inside map. */ }; #endif /* BASEUNIT_H__ */ diff --git a/Camera.cpp b/Camera.cpp index 6f0fd53..3992863 100644 --- a/Camera.cpp +++ b/Camera.cpp @@ -9,7 +9,9 @@ * Defines * ******************************************************************/ +#define MAX_CAMERA_SPEED ((int8_t)3) #define SPEED_CALCULATION_TIME ((uint8_t)3) +#define CAMERA_ACCELERATION ((int8_t)1) /* ******************************************************************* * Types definition @@ -42,30 +44,85 @@ Camera::Camera(void) : _yOffset(0), _xSpeed(0), _ySpeed(0), - _speedTimer(SPEED_CALCULATION_TIME) + _speedTimer(0) { } +void Camera::handler(void) +{ + _xOffset += _xSpeed; + _yOffset += _ySpeed; + + if (++_speedTimer >= SPEED_CALCULATION_TIME) + { + _speedTimer = 0; + + if (_ySpeed < 0) + { + _ySpeed += CAMERA_ACCELERATION; + } + else if (_ySpeed > 0) + { + _ySpeed -= CAMERA_ACCELERATION; + } + else + { + /* Y speed is already still. Continue. */ + } + + if (_xSpeed < 0) + { + _xSpeed += CAMERA_ACCELERATION; + } + else if (_xSpeed > 0) + { + _xSpeed -= CAMERA_ACCELERATION; + } + else + { + /* x speed is alreadx still. Continue. */ + } + } +} + /*****************************************************************//** * - * \brief This function transforms the coordinates for a given + * \brief This function transforms X coordinates for a given * object to camera coordinates. * *********************************************************************/ -void Camera::getCoordinates(int16_t* const x, int16_t* const y) +uint8_t Camera::getX(const uint8_t x) const { - *x += _xOffset; - *y += _yOffset; + return x + _xOffset; +} + +/*****************************************************************//** + * + * \brief This function transforms Y coordinates for a given + * object to camera coordinates. + * + *********************************************************************/ +uint8_t Camera::getY(const uint8_t y) const +{ + return y + _yOffset; } /*****************************************************************//** * * \brief Event handler executed when human player presses - * left button. + * left arrow button. * *********************************************************************/ void Camera::onLeftBtnPressed(void) { + if (_xSpeed < 0) + { + _xSpeed += CAMERA_ACCELERATION << 1; + } + else if (_xSpeed < MAX_CAMERA_SPEED) + { + _xSpeed += CAMERA_ACCELERATION; + } } /*****************************************************************//** @@ -76,4 +133,48 @@ void Camera::onLeftBtnPressed(void) *********************************************************************/ void Camera::onRightBtnPressed(void) { + if (_xSpeed > 0) + { + _xSpeed -= CAMERA_ACCELERATION << 1; + } + else if (_xSpeed > -MAX_CAMERA_SPEED) + { + _xSpeed -= CAMERA_ACCELERATION; + } +} + +/*****************************************************************//** + * + * \brief Event handler executed when human player presses + * up arrow button. + * + *********************************************************************/ +void Camera::onUpBtnPressed(void) +{ + if (_ySpeed < 0) + { + _ySpeed += CAMERA_ACCELERATION << 1; + } + else if (_ySpeed < MAX_CAMERA_SPEED) + { + _ySpeed += CAMERA_ACCELERATION; + } +} + +/*****************************************************************//** + * + * \brief Event handler executed when human player presses + * down arrow button. + * + *********************************************************************/ +void Camera::onDownBtnPressed(void) +{ + if (_ySpeed > 0) + { + _ySpeed -= CAMERA_ACCELERATION << 1; + } + else if (_ySpeed < MAX_CAMERA_SPEED) + { + _ySpeed -= CAMERA_ACCELERATION; + } } diff --git a/Camera.h b/Camera.h index ff18894..d9d02f0 100644 --- a/Camera.h +++ b/Camera.h @@ -23,15 +23,19 @@ class Camera { public: Camera(void); + void handler(void); void setLock(const bool bLock) { _bLocked = bLock; } - void getCoordinates(int16_t* const x, int16_t* const y); + uint8_t getX(const uint8_t x) const; + uint8_t getY(const uint8_t y) const; /* Event handlers. */ void onLeftBtnPressed(void); void onRightBtnPressed(void); + void onUpBtnPressed(void); + void onDownBtnPressed(void); private: bool _bLocked; diff --git a/Exe/POCKET.ELF b/Exe/POCKET.ELF index 0dfa63e..ed9a877 100755 Binary files a/Exe/POCKET.ELF and b/Exe/POCKET.ELF differ diff --git a/Exe/POCKET.HEX b/Exe/POCKET.HEX index 48125d3..44ca8c6 100644 --- a/Exe/POCKET.HEX +++ b/Exe/POCKET.HEX @@ -1,812 +1,849 @@ -:100000000C9401020C9429020C9429020C942902EC -:100010000C9429020C9429020C9429020C942902B4 -:100020000C9429020C9429020C9429020C9442127B -:100030000C9429020C9429020C9429020C94290294 -:100040000C9460130C9429020C9429020C9429023C -:100050000C9429020C9429020C9429020C94290274 -:100060000C9429020C942902526573756D65005138 -:100070007569740068006F0053696E676C65207065 -:100080006C617965722067616D65004D756C74698E -:10009000706C617965722067616D65004F7074697D -:1000A0006F6E730078008B009C00506F636B6574FB -:1000B00020456D70697265730003053F213F12088A -:1000C000120A100A0E1C0E0C1E0C141A14161F16FF -:1000D0001E131E1E1B1E1E1F1E3F213F3A2F3A17C6 -:1000E0003D173F213F181F02040A041F0E04040E8F -:1000F0001F0A1F0A0E0E1F04110E2E252E2F2A2E48 -:10010000262929021F02081F08150E04040E150EC9 -:1001100015151B151B040604040C04000000001731 -:10012000000300031F0A1F16371A1904130A153A91 -:10013000000300000E11110E000A040A040E040050 -:1001400030000404040010001804031F111F121FC4 -:10015000101D151711151F07041F17151D1F151D3D -:1001600001011F1F151F17151F000A000032000490 -:100170000A110A0A0A110A040115020E11171E05B6 -:100180001E1F150A0E110A1F110E1F15111F050142 -:100190000E111D1F041F111F1108100F1F041B1F1C -:1001A00010101F061F1E040F0E110E1F09060E1140 -:1001B0002E1F051A121509011F011F101F0F180FFE -:1001C0001F0C1F1B041B031C03191513001F110315 -:1001D0000418111F000201022020200001020C124D -:1001E0001E1F120C0C12120C121F0C1A14041E05E6 -:1001F000242A1E1F021C141D1020201D1F0814116C -:100200001F101E041E1E021C0C120C3E0A040C12AF -:100210003E1E040214160A020F120E101E0E100EBD -:100220001E081E120C1226281E322A26041E210029 -:100230001F00211E040102013F213F0A4E6F20537F -:10024000442063617264206F720A6E6F204C4F41CC -:100250004445522E4845580A0A153A4578697400B3 -:100260001D20466C617368696E670A20206C6F619F -:100270006465722E2E2E0A0A444F4E275420545580 -:10028000524E204F464621000A0A153A49676E6FC2 -:100290007265006D560A0A504C454153452054552D -:1002A000524E204F464620004C4F57204241545456 -:1002B0004552592120001753440016137800161395 -:1002C00014001510200015201000540A03E1818647 -:1002D0007F3E186D830F0F0E0183866033186DC348 -:1002E000198F1803C38E6033186DE330CF1803C322 -:1002F0009E603630CDE360CF3006C79E7E3E30CD67 -:10030000B360CF300CC6F6603330D9B660CF33CF90 -:10031000CCF66061B0DB1E60CF30D86CE6C061B057 -:10032000DB1E618F19986CC6C063B19B0E330F0F33 -:10033000B078C6FF7E1F1B061E0F0500893008021D -:100340003802497868140000F6E8DBCFC3B8AEA4E1 -:100350009B928A827B746E68625C57524E4945411B -:100360003E3A3734312E2C29272523211F1D1C1AF4 -:100370001917161514131211100F0E0D0C0B0A0974 -:100380000807064500680100000500680138010003 -:10039000000500380168010000A1039D030101FF71 -:1003A000030101F70300000007000201000003043D -:1003B00006000000000000000001020408102040B8 -:1003C0008001020408102001020408102004040423 -:1003D00004040404040202020202020303030303EE -:1003E0000300000000230026002900000000002573 -:1003F0000028002B0000000000240027002A000035 -:100400006C0211241FBECFEFD8E0DEBFCDBF11E0DC -:10041000A0E0B1E0ECE2F2E302C005900D92A63656 -:10042000B107D9F723E0A6E6B1E001C01D92AC3FC9 -:10043000B207E1F712E0C1E0D2E004C02197FE016B -:100440000E94BF17C030D107C9F70E942B020C943D -:1004500014190C9400000E9466020E94C503FDCF8F -:100460000F931F93CF938C01C0E0F8018281C817CE -:1004700098F42C2F30E0C901880F991F322F2227C2 -:10048000280F391F80819181820F931F009711F0EF -:100490000E94E802CF5FE9CF86E691E00E94450B1B -:1004A0008823D1F366E080E791E00E945704882317 -:1004B000D9F242E064E770E086E691E00E94000C29 -:1004C000813091F6CF911F910F9108950E940114F0 -:1004D00086E691E00C94460F1092B7011092B60197 -:1004E0008AE591E09093B5018093B4010895089551 -:1004F0000895CF93DF93EC010E941F038EE391E0F8 -:1005000099838883CE0188509F4F0E94640361E0E5 -:1005100070E0CE014896DF91CF910C948A03BF9290 -:10052000CF92DF92EF92FF920F931F93CF93DF93BF -:100530007C0102E011E0CEE1D1E0B12C6C0188EF4A -:10054000C80ED11C6B2D80E791E00E944E048823D9 -:1005500071F1E881F9818A819B819C0121703327A7 -:10056000309719F42115310589F095958795232B3E -:1005700051F0D701A80FB91F2D913C91E20FF31F45 -:100580000190F081E02D8E0D9F1D0995D801ED9110 -:10059000FC91119712968D919C911397309711F4BD -:1005A00080FF05C0959587958C0D9D1D0995B39489 -:1005B0000C5F1F4F2496B7E0BB12C4CFDF91CF91E1 -:1005C0001F910F91FF90EF90DF90CF90BF90089513 -:1005D0000F931F93CF93DF93EC010E948F028E0144 -:1005E000085E1F4FC850DF4FC8010E94BB03095F60 -:1005F0001F4F0C171D07C1F7DF91CF911F910F916E -:100600000895FC01718360834283238314821582E1 -:100610000895FC01648345830895CF93DF93EC0133 -:100620006A8184EB91E00E944E05288139814D81D9 -:100630006C8184EB91E0DF91CF910C943107AF9204 -:10064000BF92CF92DF92EF92FF920F931F93CF93BF -:10065000DF93EC016B0184E491E0998388837E0150 -:1006600088E0E80EF11C80E1F70111928A95E9F724 -:100670008E01085E1F4F5E01F8EFAF0EB11C60E007 -:1006800070E0C8010E947B03095F1F4F0A151B051C -:10069000B1F7C114D10431F040E150E0B601C70117 -:1006A0000E94051943E050E06CE271E0CE01029631 -:1006B000DF91CF911F910F91FF90EF90DF90CF903E -:1006C000BF90AF900C94FE18FC0110821282118230 -:1006D00014821382168215821086178283E0818726 -:1006E000089508950895FC011182108212821382E8 -:1006F0001482089508950F931F93CF93DF93EC0115 -:100700008B010E9473031E830D83DF91CF911F9194 -:100710000F910895FC01768365830895CF93DF934D -:1007200000D000D000D0CDB7DEB7FC018581968126 -:1007300083309105BCF4880F991FFC01E05BFE4FEC -:100740006081718120E041E0CE0101960E940103A9 -:1007500040E160E1CE0101960E940903CE010196BD -:100760000E940D0326960FB6F894DEBF0FBECDBFD4 -:10077000DF91CF910895CF93DF93EC010E947A032C -:10078000CE01DF91CF910C948E030F931F93CF93E3 -:10079000DF93CDB7DEB7CF50D1400FB6F894DEBFB0 -:1007A0000FBECDBF6AEA70E086E691E00E94C90EF6 -:1007B00043E064EA70E086E691E00E94000C81115B -:1007C00024C08E010D5F1E4F8AE0F80111928A95B8 -:1007D000E9F7B80186E691E00E94A10FB801025046 -:1007E0001140C8010E94790281E0C15FDE4F888319 -:1007F000CF50D140C35FDE4F19830883CD50D14025 -:10080000CE01835F9E4F0E943002C15FDE4F0FB664 -:10081000F894DEBF0FBECDBFDF91CF911F910F9136 -:100820000895FC0188E0808389E0818387E08283EA -:1008300086E0838384E0848382E0858381E186830C -:100840000895FF920F931F93CF93DF93EC018C01D8 -:10085000095F1F4FFF24FA9462E088810E94E1142F -:1008600088810E944C152F81892B19F42F5F2F83CB -:1008700007C0222349F02F3F11F41F8201C0FF82DD -:1008800060E088810E94E1142196C017D10721F70A -:10089000DF91CF911F910F91FF900895FC01E60F1A -:1008A000F11D81E09781913009F080E00895FC010D -:1008B000E60FF11D81E097819F3F09F080E00895E8 -:1008C000262F30E0FC01E20FF31F423030F4978115 -:1008D000915081E09E3F58F009C087818F3F31F0F1 -:1008E000642F0E943F1781E0913009F080E0089565 -:1008F0008EBD0DB407FEFDCF8EB50895DC016435C5 -:1009000008F057C0403308F054C090969C919097DF -:10091000E42FE595E595E595262F062E000C330B83 -:10092000542F57709230A1F4D90184E5E802A00D4C -:10093000B11D1124A351BE4F8C9190E0052E02C031 -:10094000959587950A94E2F78095982F91700CC041 -:10095000933051F41C968C916427062E000C770B73 -:10096000682760FF03C014C0911112C084E5E8023B -:10097000200D311D1124F901E351FE4F81E090E07B -:1009800001C0880F5A95EAF780959081892310C09D -:1009900084E5E802200D311D1124F901E351FE4FD9 -:1009A00081E090E001C0880F5A95EAF79081892B89 -:1009B000808308951F93CF93DF93EC01162FF89453 -:1009C00060E08F850E941D15888918161CF460E070 -:1009D0000E941D15812F0E947804888918161CF426 -:1009E00061E00E941D157894DF91CF911F910895C9 -:1009F00028EF31E0EDEEF1E0DF01A9011D92415059 -:100A00005040E1F7DC0119961C9219971A961C9236 -:100A10000895CF92DF92EF92FF920F931F93CF939F -:100A2000DF93EC018C858F5F8C878DEEE82E81E063 -:100A3000F82E10E0612F6064CE010E94DA0460E8B5 -:100A4000CE010E94DA0461E08F850E941D1588891D -:100A500018161CF460E00E941D15670104E5F601FC -:100A600081916F010E9478040150C9F78889181696 -:100A70001CF461E00E941D151F5FF4E5EF0EF11CF0 -:100A80001630C1F660E4CE01DF91CF911F910F9136 -:100A9000FF90EF90DF90CF900C94DA04FC0160A3FC -:100AA00061A30895FC0160A341A30895EF92FF9212 -:100AB0000F931F93CF93DF938C01D62FF42EE22E4A -:100AC000C0E0CE1544F44F2D4C0F6D2FC8010E948D -:100AD0007E04CF5FF6CFDF91CF911F910F91FF90F2 -:100AE000EF900895EF92FF920F931F93CF93DF93B0 -:100AF0008C01F62ED42FE22EC0E0CE1544F46F2DDB -:100B00006C0F4D2FC8010E947E04CF5FF6CFDF919E -:100B1000CF911F910F91FF90EF900895DF92EF9288 -:100B2000FF920F931F93CF93DF937C01D62FD22E8A -:100B3000C42F002E000C110B040F111D47FD1A9538 -:100B40008C2F0C2E000C990B8017910744F42D2D3F -:100B50004C2F6D2FC7010E947205CF5FF1CFDF913F -:100B6000CF911F910F91FF90EF90DF9008958F929A -:100B70009F92AF92BF92CF92DF92EF92FF920F932C -:100B80001F93CF93DF937C01162FD42EC22F81E0C9 -:100B9000C82EC21AB22EB194BB0CD0E0802F847044 -:100BA000A82E802F8270982E802F8870882E01703A -:100BB000DC170CF04DC0C7FC04C0C150B394B39413 -:100BC000CB0CDF5F8D2F880F8F5FC80EAA2071F0CE -:100BD0004D2D4C0F612F6D0FC7010E947E044D2DCE -:100BE0004D0F6C2F610FC7010E947E04992071F098 -:100BF0004D2D4C1B612F6D0FC7010E947E044D2DA2 -:100C00004D1B6C2F610FC7010E947E04882071F07C -:100C10004D2D4D0F612F6C1BC7010E947E044D2D81 -:100C20004C0F612F6D1BC7010E947E04002309F445 -:100C3000BFCF4D2D4D1B612F6C1BC7010E947E0441 -:100C40004D2D4C1B612F6D1BC7010E947E04B0CF40 -:100C5000DF91CF911F910F91FF90EF90DF90CF9098 -:100C6000BF90AF909F908F9008958F929F92AF9278 -:100C7000BF92CF92DF92EF92FF920F931F93CF9389 -:100C8000DF936C01A62E942EC22F11E0121BF22EC0 -:100C9000F194FF0C83E0B82EBE0CD1E0802F817060 -:100CA000882EE39402708FEF8D0F8C17BCF517FD23 -:100CB00004C0C150F394F3941F0D8D2F880F8F5FE4 -:100CC000180F882091F02C2F220F2E0D492D4C1B30 -:100CD0006D2F6A0DC6010E9456052B2D492D4D1B07 -:100CE0006C2F6A0DC6010E945605011104C0DF5F1A -:100CF000B394B394D8CF2C2F220F2E0D492D4C1B1B -:100D00006A2D6D1BC6010E9456052B2D492D4D1BCA -:100D10006A2D6C1BC6010E945605E9CFDF91CF9169 -:100D20001F910F91FF90EF90DF90CF90BF90AF9009 -:100D30009F908F9008959F92AF92BF92CF92DF9233 -:100D4000EF92FF920F931F93CF93DF936C01C62F07 -:100D5000D42FB22EAE2CAA0C922E9A18FE2CF60E80 -:100D6000292D6F2D0E9472051FEF100F1D0F292DC9 -:100D7000412F6F2DC6010E9472050A19DE0D202F2A -:100D80004D2F6C2FC6010E945605CB0D6FEF6C0FD7 -:100D9000202F4D2FC6010E94560501E02E2D4D2F0C -:100DA0006F2DC6010E94B7058E2D8095C80F02E0F9 -:100DB0002E2D4D2F6C2FC6010E94B705D12FDE19A5 -:100DC00004E02E2D4D2F6C2FC6010E94B70508E0C0 -:100DD0002E2D4D2F6F2DC6010E94B705DF91CF91AB -:100DE0001F910F91FF90EF90DF90CF90BF90AF9049 -:100DF0009F900895AF92BF92CF92DF92EF92FF92B1 -:100E00000F931F93CF93DF936C01B62EF42E122F06 -:100E1000C02FDE2DEE0CAD2EA60E2E196A2D0E94CF -:100E20008E05C150CE19FD0E6FEF6B0D610F6D1B5E -:100E3000EC2E01E02D2F4F2DC6010E94350602E059 -:100E40002D2F4F2D6A2DC6010E943506DF91CF91BF -:100E50001F910F91FF90EF90DF90CF90BF90AF90D8 -:100E600008952F923F925F926F927F928F929F92FE -:100E7000AF92BF92CF92DF92EF92FF920F931F93A8 -:100E8000CF93DF93EC01F901E490319684916435BE -:100E90000CF019C10E2C000CFF08062F062E000CBA -:100EA000110BF701E00FF11F1E161F060CF00BC10E -:100EB00040330CF008C1A82FC42E042E000CDD080E -:100EC0005601A80EB11C87FDBA941A141B040CF02D -:100ED000FAC02E5F3F4F570197E0A90EB11CB7FE35 -:100EE00004C05701BEE0AB0EB11CB3E0B594A794AB -:100EF000BA95E1F747FF0AC0A42FA80FAC9CC00128 -:100F0000AD9C900D1124281B390B40E08A2F0A2E2E -:100F1000000C990B840F911D47FD9A95C19714F011 -:100F2000A0E3A41BF8A067FD60E0E535F10514F02F -:100F3000E4E5F0E09E2FCC85C427C62E062E000CDB -:100F4000DD08F601E01BF10B8F014F01F7E08F2266 -:100F50009924E0E8F0E002C0F595E7958A94E2F77D -:100F60007E2F17FF02C0095F1F4FF3E0159507950D -:100F7000FA95E1F7200F311F542F577081E001C01F -:100F8000880F5A95EAF7459545954595F601B4E5DC -:100F90004B02E00DF11D1124AF0143515E4FD0E033 -:100FA0002A2EAA0F3308EE24E394BB24ED2FF0E0A1 -:100FB000E215F3050CF087C0F9015490F1E0FF123F -:100FC0001AC0962E8A01E72F6901991608F072C09F -:100FD0008E2E852021F0D8018C90882A8C92E6955F -:100FE00031F4BFEFCB1ADB0AF6015490E0E893949A -:100FF0000F5F1F4FEACFF1101CC0782E7094962E11 -:101000008A01E72F6901991608F054C08E2E8520B9 -:1010100021F0D8018C9087208C92E69531F4BFEFB7 -:10102000CB1ADB0AF6015490E0E893940F5F1F4F50 -:10103000EACFF3E0FF1629F0962E8A01E72F690127 -:1010400037C0682E6094862E8A01972E6901891612 -:10105000D8F4E92DE52159F0D801EC917C2E7824C3 -:1010600070FE02C0E82B02C0E621D801EC939694F2 -:1010700039F4BFEFCB1ADB0AF6015490E0E89E2E5C -:1010800083940F5F1F4FE3CFCE2514C08E2E852093 -:1010900021F0D8018C9088268C92E69531F4BFEF30 -:1010A000CB1ADB0AF6015490E0E893940F5F1F4FD0 -:1010B000991660F3880F19F44C5A5F4F81E0DF5F97 -:1010C0002A0D3B1D73CFDF91CF911F910F91FF90A0 -:1010D000EF90DF90CF90BF90AF909F908F907F90D8 -:1010E0006F905F903F902F900895DC01FB018491F9 -:1010F0008F5F14968C9314973196E491EF5F159659 -:10110000EC9315976E5F7F4F5F967C936E935E971F -:101110000895EF920F93CF93DF93EC014E876D8785 -:101120002F87E98A088B81E0888788A319A28F839B -:1011300069EB70E0CE010E9475080E94FC1681E008 -:101140000E94121785E00E9420178CE00E941B1756 -:1011500061E08E850E94E11461E08D850E94E114BA -:1011600061E08F850E94E114898918161CF461E002 -:101170000E94E114888918161CF461E00E94E114B1 -:10118000898918166CF460E00E941D156AE070E011 -:1011900080E090E00E94DB1361E089890E941D15C8 -:1011A0008D85082E000C990BFC01E353FC4FE49154 -:1011B000F0E0EE0FFF1FE551FC4F259134913D8B80 -:1011C0002C8BFC01E754FC4FE491EB8F8E85082EAD -:1011D000000C990BFC01E353FC4FE491F0E0EE0F9F -:1011E000FF1FE551FC4F259134913B8B2A8BFC016D -:1011F000E754FC4FE491EA8F8889082E000C990B84 -:10120000FC01E353FC4FE491F0E0EE0FFF1FE551CA -:10121000FC4F259134913F8B2E8BFC01E754FC4F02 -:10122000E491EC8F8F85082E000C990BFC01E353A1 -:10123000FC4FE491F0E0EE0FFF1FE551FC4F2591CC -:101240003491398F288FFC01E754FC4FE491ED8FE6 -:1012500061E2CE010E94DA0464E1CE010E94DA0468 -:101260008B8587FF02C08FE78B876B856068CE0117 -:101270000E94DA0460E2CE010E94DA046CE0CE0142 -:101280000E94DA04CE01DF91CF910F91EF900C9480 -:1012900009056F927F928F929F92AF92BF92CF92E9 -:1012A000DF92EF92FF920F931F93CF93DF93EC01A6 -:1012B00064350CF084C040330CF081C0EC81F0E068 -:1012C00031970E9FC0010F9F900D1124860F911D25 -:1012D00067FD9A95181619060CF071C03D81842F90 -:1012E000042E000C990B039F800D911D11241816DC -:1012F00019060CF064C0D02EB42EC62E88A0A62EDF -:10130000962EE22EF12CEA2DEC190E2E000CFF0B7E -:101310008C8190E0E817F9070CF050C00197E817AE -:10132000F90779F0E89E9001E99E300DF89E300DA6 -:101330001124E20FF31F8E8D9F8DE80FF91F14917A -:1013400001C010E07B2C6B2C272D2B19022E000CDA -:10135000330B8D8190E0281739076CF510FF11C011 -:1013600081E0D81206C0472D6A2DCE010E947E046E -:101370001EC00D2D2D2D462D692DCE010E948E05EE -:1013800016C089A198A1891791F088A381E0D8128D -:1013900006C0472D6A2DCE010E947E0407C00D2D88 -:1013A0002D2D462D692DCE010E948E0588A2169501 -:1013B0006D0C7394C9CF9D0CA394A5CF88A2DF9127 -:1013C000CF911F910F91FF90EF90DF90CF90BF9042 -:1013D000AF909F908F907F906F9008950F93CF93D1 -:1013E000DF93EC016A3011F428851EC06D3019F1CD -:1013F000262F08854A8569850E94490928853C81F0 -:101400008985239F800D112489879F81992399F0D5 -:10141000082E000C990B44E550E0239F4019510918 -:101420001124481759073CF49D818A85299F800D16 -:1014300011248A87198681E090E0DF91CF910F9186 -:1014400008958F929F92AF92BF92CF92DF92EF92C8 -:10145000FF920F931F93CF93DF93EC015C0186E81B -:10146000A80EB11CD5019C91992309F44DC09C3064 -:1014700018F41CE0191B01C010E0FE01EA5AFF4FEE -:1014800081E080836E01BEE4CB0ED11C60E0C6011A -:101490000E944E054E01E3E58E0E911CD4018C9105 -:1014A00003E0080F9DE2F92E4F2D481B410F23E06A -:1014B000E22E24E560E0C6010E94FA0661E0C60162 -:1014C0000E944E05F401808103E0080F4F2D481B58 -:1014D000410F24E560E0C6010E949B06FE01E95A27 -:1014E000FF4F84E080833196D4018C91181B115DED -:1014F0001083CC57DF4F68817981C6010E94B215F5 -:10150000F501808181508083DF91CF911F910F91F0 -:10151000FF90EF90DF90CF90BF90AF909F908F9013 -:101520000895CF92DF92FF920F931F93CF93DF9393 -:10153000FC01248D358D232B09F49FC0EC018C0117 -:10154000025B1F4F40E061E0C8010E945205FE01AE -:10155000E95AFF4FDE01AE5ABF4F9C9185E5891BCA -:10156000808331961082698D613009F463C028F060 -:10157000888D653008F074C06FC0CE0185960E94DA -:10158000E71081E0FE01EA5AFF4F808369EB70E0CB -:10159000C8010E9475081D8E1C8EFE01EC5AFF4F7B -:1015A000108288EAF82E6E01FAE0CF0ED11CCE012F -:1015B0000E94450B8823D9F368EA72E0C8010E94B3 -:1015C000B2156A8D7B8D4AE050E0C8010E94651615 -:1015D00063E972E0C8010E94B2156F2D62956F70C9 -:1015E00070E04AE050E0C8010E94B31668E872E07B -:1015F000C8010E94B21564E0C6010E944E04811128 -:101600003CC0FA94F110D3CF60E0CE010E94BA1230 -:1016100083B7817F846083BF83B7816083BF83B7D3 -:10162000816083BF889583B78E7F83BF83B78E7FAA -:1016300083BFBDCFCF58DF4F88819981AA81BB81FD -:101640008F709927AA27BB270897A105B10510F429 -:1016500067E009C068E707C0882379F06B5F03C0C3 -:10166000882359F06FE2C801DF91CF911F910F914C -:10167000FF90DF90CF900C94D515DF91CF911F9103 -:101680000F91FF90DF90CF9008958F929F92AF922D -:10169000BF92CF92DF92EF92FF920F931F93CF935F -:1016A000DF93EC017C0180E8E80EF11CF7018080FB -:1016B0009180A280B3800E94AA13861A970AA80A72 -:1016C000B90A6E01FFE7CF0ED11CF601808190E0D0 -:1016D000A0E0B0E08E0105581F4F88159905AA05B6 -:1016E000BB0550F4F80180819181A281B381892BDF -:1016F0008A2B8B2B09F040C0F80180819181A28157 -:10170000B381892B8A2B8B2BA9F57E01F5E2EF0E95 -:10171000F11CC7010E94E410C7010E945011C701CB -:101720000E941512CE010E94210ACE010E94910A48 -:101730007E018EE4E80EF11CC7010E940905FE013E -:10174000EC5AFF4F8081811103C0C7010E94F80449 -:101750000E94B613F8016083718382839383FE0134 -:10176000EB58FF4FC958DF4F28813981621B730B3B -:101770007183608380E037C00E94AA13F601208144 -:10178000DC01CB01820F911DA11DB11DF7018083EA -:101790009183A283B383FE01EF58FF4F8081918133 -:1017A000A281B3810196A11DB11D80839183A28383 -:1017B000B383F80110821182128213820E94B61341 -:1017C000FE01E958FF4F6083718382839383CE01CA -:1017D0000E94BE12CE010A960E942104CE014896B4 -:1017E0000E94271381E0DF91CF911F910F91FF900D -:1017F000EF90DF90CF90BF90AF909F908F90089523 -:101800002F923F924F925F926F927F928F929F9210 -:10181000AF92BF92CF92DF92EF92FF920F931F93FE -:10182000CF93DF93CDB7DEB765970FB6F894DEBFE1 -:101830000FBECDBF6C016A8B7B8B4B83FC01EC5AD6 -:10184000FF4F10822FEF2D831C821D8A10E31C8A0C -:101850005C013AE0A30EB11C1C0183E5280E311C8B -:10186000BF972F01242F30E03F832E83C601895A72 -:101870009F4F99878887F396FB87EA8796012A5AB4 -:101880003F4F3F872E870297998B888B3A973F016E -:10189000C6010E94450B8823D9F364E0C5010E946C -:1018A0004E04012F110F110B811144C065E0C501D9 -:1018B0000E944E0481113EC066E0C5010E944E04A4 -:1018C000811138C02C8121114CC044E063E0C50176 -:1018D0000E946004882331F03C893F5F3C8BC20149 -:1018E0000E94921244E061E0C5010E9460048823D6 -:1018F00031F08C8981508C8BC2010E949212EC894C -:101900008E2F0E2E000C990B2E813F81821793078C -:1019100031F0E7FF05C03B8131503C8B01C01C8A90 -:10192000F1018081F4E0F80F2C89829FF0191124D5 -:10193000FD8B22C0F101F081F98364E0C5010E94B2 -:101940004E04882309F48CC0C2010E946612FC89EF -:10195000FD83298121953B81239F302D1124325015 -:101960003D8BC8013D89831B910937FD93950297F3 -:101970000CF47AC081E08C839D89090F111D97FDBD -:101980001A9517FF02C00F5F1F4FF801F595E795F5 -:10199000FA83E9830981102FE885F9851082EA85A9 -:1019A000FB85008381E0EE85FF858083E889F989E6 -:1019B0001082EA88FB88812C912C2C89022E000C45 -:1019C000330B3D872C878E819F818816990609F1FC -:1019D000EC85FD85E815F90579F423E0E885F985BE -:1019E0002083F1018081F02F2C89289FF00D112494 -:1019F0008F2FEA85FB858083F70165917491C30180 -:101A00000E94F015FFEF8F1A9F0A22E0E20EF11CF0 -:101A1000DACF60E0C3010E944E05F1018081498167 -:101A2000FC89F89F400D1124415024E560E0C3017A -:101A30000E94720561E0C3010E944E05F1018081A0 -:101A400003E0080F4981FC89F89F400D11244250A2 -:101A500083E0E82E24E560E0C3010E949B0618CFD6 -:101A6000C2010E947C1275CF8D8165960FB6F894E5 -:101A7000DEBF0FBECDBFDF91CF911F910F91FF90C1 -:101A8000EF90DF90CF90BF90AF909F908F907F901E -:101A90006F905F904F903F902F9008950F931F93FA -:101AA000CF93DF93EC018C01025B1F4FC8010E94B2 -:101AB000F80460E672E0C8010E94B215C8010E94F5 -:101AC000090583E00E9420178EE591E0EEEFFFE329 -:101AD0000995FE01EC5AFF4F10826BE372E0C801DA -:101AE0000E94F015C8010E9409052A96CE010E94A5 -:101AF000210464E0CE010E944E04811107C062E31C -:101B000070E080E090E00E94DB13F0CFDF91CF9196 -:101B10001F910F9108952F923F924F925F926F9273 -:101B20007F928F929F92AF92BF92CF92DF92EF926D -:101B3000FF920F931F93CF93DF93CDB7DEB7299713 -:101B40000FB6F894DEBF0FBECDBF3C0120E7620E9A -:101B5000711CF3012081222309F402C15A011B01E7 -:101B6000998788877A9781E08083E885F985EB5AA1 -:101B7000FF4F1082E885F985EC5AFF4F1082E88507 -:101B8000F985108E8F01025B1F4F61E0C8010E9432 -:101B90004E05888599858D5A9F4F9D838C83C88477 -:101BA000D98497E5C90ED11CE884F984E8E5EE0EE6 -:101BB000F11C888599858E5A9F4F9A838983E88581 -:101BC000F985EF58FF4FFF83EE8388849984FAE00C -:101BD0008F0E911C4884598425E2420E511C888541 -:101BE00099850E94450B8823D1F3F10184918823C4 -:101BF00029F0EC81FD81F081FB8301C01B822AEC7E -:101C000032E040E060E0C8010E943107A114B10455 -:101C100039F04B81445F950160E0C8010E943107B3 -:101C2000F60110822CE0F7012083B101C8010E9467 -:101C3000B215E981FA818081982F990F890F8195DA -:101C40008D5AF6018083EC81FD818081982F990F58 -:101C5000890F8195835DF7018083EE81FF8180810B -:101C600084FF03C066EC72E002C062EC72E0C8015F -:101C70000E94F015E981FA818081982F990F890FD0 -:101C800081958D5AF6018083F70180818F5F808373 -:101C9000E885F98582A5882319F06EEB72E002C011 -:101CA0006AEB72E0C8010E94F015E981FA81808137 -:101CB000982F990F890F81958D5AF6018083F7012E -:101CC00080818F5F808366EB72E0C8010E94F0150F -:101CD00065E0C4010E944E04882351F0E885F9852F -:101CE00062A56F5FC2010E94A812C2010E949212F7 -:101CF00064E0C4010E944E04811113C0F3012081ED -:101D0000422F50E060E070E0EE81FF8180819181A0 -:101D1000A281B38184179507A607B707A8F02F3FC4 -:101D200099F08FEFF3018083088519850B5D1F4FB4 -:101D300060E0C8010E948510C8010E94661281E01F -:101D4000E885F985808F0CC066E0C4010E944E04CE -:101D5000882309F444CF888599850E944E0D35CF9C -:101D600029960FB6F894DEBF0FBECDBFDF91CF919D -:101D70001F910F91FF90EF90DF90CF90BF90AF90A9 -:101D80009F908F907F906F905F904F903F902F909B -:101D9000089540E050E00C948B0DE0E8F7E72591C2 -:101DA000349181E02130304C09F080E00895CF93E8 -:101DB000DF93EC010E94CD0E9E01275A3F4FDE01BA -:101DC000A059BF4F882309F43CC0E6E9F7E78491A6 -:101DD000F9018083E7E9F7E7E491EC83E8E9F7E7C5 -:101DE000E491ED83E9E9F7E7859194919F838E83F0 -:101DF000EBE9F7E78591949199878887EDE9F7E713 -:101E0000E491EBA7EEE9F7E7E491EAA7EFE9F7E75A -:101E1000E491EC93E0EAF7E7859194919D8F8C8FA4 -:101E2000E2EAF7E7859194919F8F8E8FE4EAF7E7D6 -:101E30008591949199A388A3E6EAF7E78591949117 -:101E400020C08CE3F90180831C828FEF8D8320E218 -:101E500033E03F832E8324ED33E03987288791E0F8 -:101E60009BA79AA78C938CEA9DE09D8F8C8F8EED1B -:101E70009DE09F8F8E8F84E79EE099A388A38CE3DB -:101E80009FE09BA38AA3DF91CF910895CF92DF9229 -:101E9000EF920F93CF93DF93EC01FC01E158FF4FDA -:101EA00082E38083349781E090E0A0E0B0E080831B -:101EB0009183A283B3833B978FEF8083CE010E94EF -:101EC000D70ECE010E94B6126FEFCE010E94BA1259 -:101ED0006E018AE0C80ED11CC6010E941104C60121 -:101EE0000E942104CE0148960E941D138EE0E82E28 -:101EF0000FE020E14BE06DE0CE01825B9F4F0E943E -:101F00008908A596CE010E94F10F65E0C6010E94E6 -:101F10004E04882351F060E0CE01DF91CF910F9104 -:101F2000EF90DF90CF900C94A81240E06AE373E04A -:101F3000CE01DF91CF910F91EF90DF90CF900C9475 -:101F40009010CF93DF93D62FC72F0E94CD0E8823FA -:101F500059F0AD2FBC2FEBE8F7E784918D933196C4 -:101F6000E53987E7F807C9F7DF91CF91089550E089 -:101F7000DA01AA0FBB1FA80FB91F1F963C911F972C -:101F800050962C915097E32FF22FE60FF11DE60F9C -:101F9000F11D2591349190963C932E935F97F90112 -:101FA00065917491FC017481769F602D1124DC0190 -:101FB000A40FB51F91966C939197F9018591949117 -:101FC000E92FF0E0862F90E0E817F90720F4F901F7 -:101FD00085919491692F769F602D112492966C9330 -:101FE000089521E0FC01248324E020A729E933E0BF -:101FF000308B278740E060E00E94B70F61E070E01F -:1020000083E00E945914E1EBF0E08081887F8160D9 -:102010008083F89410928000E1E8F0E01082109242 -:1020200085001092840088E191E09093890080936C -:102030008800808188608083808181608083EFE672 -:10204000F0E0808182608083789408950F93FC0192 -:10205000842F01112AC06230D9F050F4662399F020 -:10206000613019F540E0682FCF010F910C94B70F44 -:102070006330A9F06430C9F46481649F802D112419 -:10208000858F268F12C04B3008F08AE0868B0DC0FA -:102090006481649F802D1124818F228F06C064810A -:1020A000649F802D1124838F248F0F910895FC014C -:1020B00021110EC0648B8481849F402D1124458B97 -:1020C00015A214A213A281E0878B8093F103108ED6 -:1020D00008958091F103882319F08091EE0301C0E7 -:1020E00080E08093B4000895FC0161110DC0178A4F -:1020F000158A14A213A2108E1092EE031092EF0311 -:102100001092F1030C9469100895CF93DF9361113D -:1021100004C0EC010E9474101982DF91CF910895E0 -:102120000F931F93CF93DF93411110C08B01EC01EC -:1021300060E00E9485101E870D871B8A1A8A81E045 -:10214000898389E08E8B198E1B8E1D8EDF91CF9136 -:102150001F910F910895CF93DF93DC01611131C07E -:102160008C91882371F111968C911197811129C05E -:1021700019968C91199717962C91179718969C91F0 -:102180001897E22FF92FE80FF11DE80FF11D2591A7 -:1021900034912F3F8FEF380711F41C9212C0ED01DC -:1021A0003C873327220F331FEA85FB85E20FF31F9D -:1021B0006591749140E0CD010E94901089858F5FF8 -:1021C0008987DF91CF91089560E00C94AB1060E0B7 -:1021D0000C9485100F93CF93DF93EC0161115CC0D9 -:1021E0008981882309F458C08D89811155C02D85B6 -:1021F0003E85EA89FB89EE0FFF1FE20FF31F8591F1 -:102200009491009701F58989813021F41B8A1A8AFB -:10221000F90110C01982888160E0882371F0CE0135 -:102220000E94AB10EA89FB89EE0FFF1F8D859E850A -:10223000E80FF91F8591949106C0CE01DF91CF91EF -:102240000F910C947410BC017695679576956795FF -:1022500080FF17C0AC0186E0569547958A95E1F757 -:10226000292F26952695269520514F716F7000E0F5 -:10227000CE010E942610EA89FB893196FB8BEA8BFE -:10228000D3CF492F6F7320E0CE010E9457108A8967 -:102290009B8901969B8B8A8BDF91CF910F9108953B -:1022A00060E00C94EA10CF93DF93EC016111BAC0A7 -:1022B0008F89882309F4B6C09D89911105C0CE018C -:1022C000DF91CF910C94741091509D8B8DA1811151 -:1022D00039C02BA13CA12F5F3F4FC901880F991F27 -:1022E000EF8DF8A1E80FF91F65917491862F877023 -:1022F0008EA3AB0163E0569547956A95E1F7CA0155 -:1023000096958795972F969596959FA38F739C8109 -:10231000899F802D11248DA341704093ED033CA330 -:102320002BA389A190E02817390760F02AA1222366 -:1023300029F0821B91099CA38BA304C060E0CE010D -:102340000E9474108DA181508DA3888D21E0280FEB -:10235000288F4C893FA1340F8C85380F3A836B8DC1 -:10236000662361F070E0822F022E000C990B0E9410 -:102370005F178C8D869F300D11243A838A8190E0FF -:10238000CB966BE370E00E945F178A833E893B83A4 -:10239000698D662371F0062E000C770B822F022EBA -:1023A000000C990B0E945F178A8D869F300D1124B7 -:1023B0003B836D8D662389F0822F220F990B70E08D -:1023C0000E945F17CB0162E070E00E945F172E8DC4 -:1023D0009B81289F900D11249B834F3341F08B816B -:1023E0008A300CF089E087FD80E08B8301C01B827E -:1023F000F894EA81F0E0E85BFC4FE491E093F003AD -:102400008D8198A5899F802D11249B81899F802D86 -:1024100011249EA1899F802D11248093EF03809326 -:10242000EE037894DF91CF91089560E00C945311FE -:102430006091EF03662329F18091F2038F5F80930F -:10244000F2039091F0038917E0F081E09091F1039D -:10245000911180E08093F1031092F2038091ED03DB -:10246000882369F08091000193E4899F802D1124D5 -:10247000895B809300010E943F179093EE030C94B8 -:10248000691008951F920F920FB60F9211242F9387 -:102490003F934F935F936F937F938F939F93AF93EC -:1024A000BF93EF93FF930E941812FF91EF91BF919A -:1024B000AF919F918F917F916F915F914F913F91DC -:1024C0002F910F900FBE0F901F901895CF93DF9311 -:1024D000EC0160E00E94851081E993E09E878D8782 -:1024E0001B8A1A8A81E0898389E08E8B198E1B8E64 -:1024F0001D8EDF91CF910895CF93DF93EC0160E0C3 -:102500000E94851089E893E09E878D871B8A1A8A2E -:1025100081E0898389E08E8B198E1B8E1D8EDF9161 -:10252000CF910895CF93DF93EC0160E00E94851076 -:1025300083E893E09E878D871B8A1A8A81E08983CE -:1025400089E08E8B198E1B8E1D8EDF91CF910895A1 -:10255000FC01262F660F330B9681692F70E06F5FA9 -:102560007F4FC9010E945F178583089521E0FC0118 -:102570002083089570E085E00C945914AF92BF92C7 -:10258000CF92DF92EF92FF920F931F93CF93DF933F -:10259000EC0189819A812FE0289F8001299F100DED -:1025A000112485E10E943C14800F911F24E0969530 -:1025B00087952A95E1F79A8389832881222391F1CF -:1025C000EC81AD80B12CC12CD12CA885B9857D01C1 -:1025D00000E010E06E817F819B0140E050E08617B3 -:1025E000970728F0BC01A817B90708F4BD0180E0DF -:1025F00090E01F921F921F92EF930E94BA166B8376 -:102600000F900F900F900F9070E085E0DF91CF91C9 -:102610001F910F91FF90EF90DF90CF90BF90AF9000 -:102620000C945914DF91CF911F910F91FF90EF906F -:10263000DF90CF90BF90AF900895FC018CE39FE0B6 -:102640009383828384E0818381E084870895CF939C -:10265000DF93FC0124813581232B79F1EC01848502 -:102660008F7141F584E10E943C14BC01990F880BE5 -:10267000990B0E94051826EE3FE34EEC50E40E94B1 -:1026800091180E94D4179B017B836A83672B81F08A -:1026900084E08983FE01349680E0419151912417B2 -:1026A000350710F4898309C08F5F8430B1F702C009 -:1026B0008FEF89838C858F5F8C87DF91CF91089511 -:1026C0001F920F920FB60F9211242F933F938F9367 -:1026D0009F93AF93BF938091F4039091F503A091E2 -:1026E000F603B091F7033091F30323E0230F2D3766 -:1026F00020F40196A11DB11D05C026E8230F029606 -:10270000A11DB11D2093F3038093F4039093F5036F -:10271000A093F603B093F7038091F8039091F90327 -:10272000A091FA03B091FB030196A11DB11D809306 -:10273000F8039093F903A093FA03B093FB03BF91BE -:10274000AF919F918F913F912F910F900FBE0F905E -:102750001F9018952FB7F8946091F4037091F503CA -:102760008091F6039091F7032FBF08953FB7F89437 -:102770008091F8039091F903A091FA03B091FB03C3 -:1027800026B5A89B05C02F3F19F00196A11DB11DCC -:102790003FBFBA2FA92F982F8827820F911DA11D07 -:1027A000B11DBC01CD0142E0660F771F881F991F44 -:1027B0004A95D1F70895CF92DF92EF92FF92CF938F -:1027C000DF936B017C010E94B613EB01C114D104AD -:1027D000E104F10479F00E94B6136C1B7D0B683E96 -:1027E0007340A0F381E0C81AD108E108F108C8518C -:1027F000DC4FECCFDF91CF91FF90EF90DF90CF9047 -:102800000895789484B5826084BD84B5816084BD68 -:1028100085B5826085BD85B5816085BDEEE6F0E059 -:10282000808181608083E1E8F0E0108280818260B5 -:102830008083808181608083E0E8F0E08081816036 -:102840008083E1EBF0E0808184608083E0EBF0E066 -:10285000808181608083EAE7F0E08081846080830A -:1028600080818260808380818160808380818068B4 -:1028700080831092C10008958E3008F08E50209110 -:10288000010190E4299F900111248770822B80938D -:102890007C0080917A00806480937A0080917A0035 -:1028A00086FDFCCF809178002091790090E0922BFA -:1028B00008951F93CF93DF93182FEB0161E00E94DF -:1028C000E114209711F460E004C0CF3FD10539F442 -:1028D00061E0812FDF91CF911F910C941D15E12FA5 -:1028E000F0E0EB55FC4FE491E330F9F048F4E130CF -:1028F000B9F0E230A1F584B5806284BDC8BD34C0B2 -:10290000E630E9F0E73019F1E43049F580918000D4 -:10291000806280938000D0938B00C0938A0024C093 -:1029200084B5806884BDC7BD1FC080918000806869 -:1029300080938000D0938900C093880015C0809157 -:10294000B00080688093B000C093B3000DC0809148 -:10295000B00080628093B000C093B40005C0C0385E -:10296000D1050CF0B5CFAFCFDF91CF911F91089576 -:10297000833081F028F4813099F08230A1F00895FD -:102980008630A9F08730B9F08430D1F4809180008E -:102990008F7D03C0809180008F77809380000895A1 -:1029A00084B58F7702C084B58F7D84BD08958091F2 -:1029B000B0008F7703C08091B0008F7D8093B0000E -:1029C0000895CF93DF9390E0FC01E754FC4F2491EE -:1029D000FC01E353FC4F8491882361F190E0880F60 -:1029E000991FFC01EB50FC4FC591D491FC01E551BE -:1029F000FC4FA591B491611109C09FB7F8948881EB -:102A0000209582238883EC912E230BC0623061F4E1 -:102A10009FB7F8948881322F309583238883EC9177 -:102A20002E2B2C939FBF06C08FB7F894E8812E2BD6 -:102A300028838FBFDF91CF9108951F93CF93DF93AA -:102A4000282F30E0F901EB55FC4F8491F901E75450 -:102A5000FC4FD491F901E353FC4FC491CC23C1F056 -:102A6000162F81110E94B814EC2FF0E0EE0FFF1F1B -:102A7000E551FC4FA591B4919FB7F894111104C092 -:102A80008C91D095D82302C0EC91DE2BDC939FBFB4 -:102A9000DF91CF911F910895CF93DF93282F30E0DE -:102AA000F901EB55FC4F8491F901E754FC4FD491A7 -:102AB000F901E353FC4FC491CC2391F081110E94A2 -:102AC000B814EC2FF0E0EE0FFF1FEF51FC4FA59173 -:102AD000B491EC91ED2381E090E021F480E002C01C -:102AE00080E090E0DF91CF910895CF92DF92EF9256 -:102AF000FF920F931F93CF93DF936C01EB017B0148 -:102B0000E40EF51E00E010E0CE15DF0561F06991DE -:102B1000D601ED91FC910190F081E02DC60109955F -:102B2000080F191FF1CFC801DF91CF911F910F91AD -:102B3000FF90EF90DF90CF9008956115710579F0C7 -:102B4000FB0101900020E9F73197AF01461B570BBD -:102B5000DC01ED91FC910280F381E02D099480E08D -:102B600090E00895EF92FF920F931F93CF93DF931E -:102B70007C01FB0100E010E06491EF0121966623E7 -:102B800061F0D701ED91FC910190F081E02DC7013A -:102B90000995080F191FFE01EFCFC801DF91CF91F2 -:102BA0001F910F91FF90EF900895DC01ED91FC9142 -:102BB0000190F081E02D09940F931F93CF93DF9341 -:102BC000EC016DE00E94D5158C016AE0CE010E94F7 -:102BD000D515800F911FDF91CF911F910F9108950F -:102BE0000F931F93CF93DF93EC010E94B2158C01DA -:102BF000CE010E94DC15800F911FDF91CF911F91B4 -:102C00000F9108958F929F92AF92BF92CF92DF92D1 -:102C1000EF92FF920F931F93CF93DF93CDB7DEB761 -:102C2000A1970FB6F894DEBF0FBECDBF6C01142F75 -:102C3000E52FCB01022F19A2223008F40AE07E0111 -:102C400021E2E20EF11C802E912CA12CB12C612FDF -:102C50007E2FA50194010E947317029F1019112461 -:102C600081E0E81AF1081A3014F4105D01C0195C13 -:102C7000F7011083122FE32FCA01232B242B252BBE -:102C800031F7B701C6010E949D15A1960FB6F894C1 -:102C9000DEBF0FBECDBFDF91CF911F910F91FF908F -:102CA000EF90DF90CF90BF90AF909F908F9008955E -:102CB0002115310541F4DC01ED91FC910190F08189 -:102CC000E02D642F09940C9402169A01AB0160E088 -:102CD00070E00C945816CF92DF92EF92FF920F9310 -:102CE0001F93CF93DF932115310581F4DC01ED9122 -:102CF000FC910190F081E02D642FDF91CF911F9125 -:102D00000F91FF90EF90DF90CF9009942A3031051A -:102D100001F577FF1DC06A017B01EC016DE20E94A5 -:102D2000D5158C0144275527BA014C195D096E0948 -:102D30007F092AE0CE010E940216800F911FDF91C9 -:102D4000CF911F910F91FF90EF90DF90CF9008955A -:102D50002AE0DF91CF911F910F91FF90EF90DF90CC -:102D6000CF900C9402169A01AB01770F660B770B8C -:102D70000C946B164F925F926F927F92AF92BF92BC -:102D8000CF92DF92EF92FF920F931F93CF93DF9337 -:102D9000CDB7DEB729013A019B01AC0124193509F1 -:102DA0004609570989899A89AB89BC89BC01CD013B -:102DB0006A197B098C099D090E942F17A8019701A8 -:102DC00024193509460957090E949517CA01B90106 -:102DD0006A0D7B1D8C1D9D1DDF91CF911F910F9161 -:102DE000FF90EF90DF90CF90BF90AF907F906F906B -:102DF0005F904F900895089561E08AE00E941D154C -:102E000061E08AE00E94E1148CB580618CBD8CB5D4 -:102E100080648CBD61E08DE00E94E11461E08BE094 -:102E20000C94E114811103C08CB5806202C08CB592 -:102E30008F7D8CBD08959CB5937F892B8CBD0895A3 -:102E40009CB59C7F282F2370922B9CBD2DB582FBB7 -:102E5000992790F9822F8E7F892B8DBD0895DB01F4 -:102E60008F939F930E94B417BF91AF91A29F800D43 -:102E7000911DA39F900DB29F900D11240895991B51 -:102E800079E004C0991F961708F0961B881F7A9561 -:102E9000C9F780950895AA1BBB1B51E107C0AA1F63 -:102EA000BB1FA617B70710F0A61BB70B881F991FEB -:102EB0005A95A9F780959095BC01CD01089597FB8F -:102EC000072E16F4009407D077FD09D00E944B1707 -:102ED00007FC05D03EF4909581959F4F089570951D -:102EE00061957F4F0895A1E21A2EAA1BBB1BFD011D -:102EF0000DC0AA1FBB1FEE1FFF1FA217B307E407D9 -:102F0000F50720F0A21BB30BE40BF50B661F771F30 -:102F1000881F991F1A9469F7609570958095909510 -:102F20009B01AC01BD01CF010895052E97FB1EF456 -:102F300000940E94AC1757FD07D00E94731707FC3E -:102F400003D04EF40C94AC175095409530952195D4 -:102F50003F4F4F4F5F4F08959095809570956195C5 -:102F60007F4F8F4F9F4F08950E94C517A59F900DCB -:102F7000B49F900DA49F800D911D11240895EE0F14 -:102F8000FF1F0590F491E02D0994A29FB001B39F1B -:102F9000C001A39F700D811D1124911DB29F700D62 -:102FA000811D1124911D08950E94701888F09F576B -:102FB00098F0B92F9927B751B0F0E1F0660F771F5D -:102FC000881F991F1AF0BA95C9F714C0B13091F053 -:102FD0000E948A18B1E008950C948A18672F782F00 -:102FE0008827B85F39F0B93FCCF386957795679518 -:102FF000B395D9F73EF490958095709561957F4F84 -:103000008F4F9F4F0895E89409C097FB3EF4909529 -:103010008095709561957F4F8F4F9F4F9923A9F0B1 -:10302000F92F96E9BB279395F69587957795679540 -:10303000B795F111F8CFFAF4BB0F11F460FF1BC084 -:103040006F5F7F4F8F4F9F4F16C0882311F096E917 -:1030500011C0772321F09EE8872F762F05C06623C5 -:1030600071F096E8862F70E060E02AF09A95660F7E -:10307000771F881FDAF7880F9695879597F9089537 -:1030800097F99F6780E870E060E008959FEF80EC1B -:10309000089500240A9416161706180609060895BE -:1030A00000240A9412161306140605060895092E24 -:1030B0000394000C11F4882352F0BB0F40F4BF2B93 -:1030C00011F460FF04C06F5F7F4F8F4F9F4F0895D3 -:1030D00057FD9058440F551F59F05F3F71F04795C9 -:1030E000880F97FB991F61F09F3F79F087950895AE -:1030F000121613061406551FF2CF4695F1DF08C0CD -:10310000161617061806991FF1CF869571056105E9 -:1031100008940895E894BB2766277727CB0197F991 -:1031200008950E94A4180C9457180E94491838F06A -:103130000E94501820F0952311F00C9440180C9424 -:10314000461811240C948B180E94681870F3959FF0 -:10315000C1F3950F50E0551F629FF001729FBB278E -:10316000F00DB11D639FAA27F00DB11DAA1F649F2A -:103170006627B00DA11D661F829F2227B00DA11DDD -:10318000621F739FB00DA11D621F839FA00D611D63 -:10319000221F749F3327A00D611D231F849F600D84 -:1031A000211D822F762F6A2F11249F5750409AF0AD -:1031B000F1F088234AF0EE0FFF1FBB1F661F771F39 -:1031C000881F91505040A9F79E3F510580F00C9404 -:1031D00040180C948B185F3FE4F3983ED4F3869527 -:1031E00077956795B795F795E7959F5FC1F7FE2BA4 -:1031F000880F911D9695879597F90895DC0101C078 -:103200006D9341505040E0F70895FB01DC014150BF -:10321000504048F001900D920020C9F701C01D9266 -:0C32200041505040E0F70895F894FFCFB3 -:10322C0001017103000000000000720300000000A7 -:10323C000000000000000000000000000000000082 -:10324C0000000000000000000000000000007802F8 -:10325C000000770200000000000000000000770270 -:10326C0000000000FB160808003C4299A5661800F7 -:10327C0000004601000000000000EE0975154C4FDF -:06328C0041444552000020 -:04000003000004569F +:100000000C9406020C942E020C942E020C942E02D8 +:100010000C942E020C942E020C942E020C942E02A0 +:100020000C942E020C942E020C942E020C946D1340 +:100030000C942E020C942E020C942E020C942E0280 +:100040000C948B140C942E020C942E020C942E0201 +:100050000C942E020C942E020C942E020C942E0260 +:100060000C942E020C942E02526573756D6500512E +:100070007569740068006F000808003C4299A56625 +:10008000180053696E676C6520706C617965722029 +:1000900067616D65004D756C7469706C617965722E +:1000A0002067616D65004F7074696F6E7300820028 +:1000B0009500A600506F636B657420456D70697282 +:1000C00065730003053F213F1208120A100A0E1C37 +:1000D0000E0C1E0C141A14161F161E131E1E1B1EA9 +:1000E0001E1F1E3F213F3A2F3A173D173F213F1851 +:1000F0001F02040A041F0E04040E1F0A1F0A0E0E1C +:100100001F04110E2E252E2F2A2E262929021F020A +:10011000081F08150E04040E150E15151B151B04DB +:100120000604040C040000000017000300031F0A6B +:100130001F16371A1904130A153A000300000E118E +:10014000110E000A040A040E040030000404040026 +:1001500010001804031F111F121F101D1517111571 +:100160001F07041F17151D1F151D01011F1F151F38 +:1001700017151F000A00003200040A110A0A0A11AA +:100180000A040115020E11171E051E1F150A0E1175 +:100190000A1F110E1F15111F05010E111D1F041F2F +:1001A000111F1108100F1F041B1F10101F061F1E08 +:1001B000040F0E110E1F09060E112E1F051A12151F +:1001C00009011F011F101F0F180F1F0C1F1B041BFD +:1001D000031C03191513001F11030418111F00023B +:1001E00001022020200001020C121E1F120C0C1212 +:1001F000120C121F0C1A14041E05242A1E1F021CA6 +:10020000141D1020201D1F0814111F101E041E1E77 +:10021000021C0C120C3E0A040C123E1E04021416A0 +:100220000A020F120E101E0E100E1E081E120C12C5 +:1002300026281E322A26041E21001F00211E04012A +:1002400002013F213F0A4E6F2053442063617264D4 +:10025000206F720A6E6F204C4F414445522E484524 +:10026000580A0A153A45786974001D20466C617376 +:1002700068696E670A20206C6F616465722E2E2E8D +:100280000A0A444F4E2754205455524E204F46469A +:1002900021000A0A153A49676E6F7265006D560AA9 +:1002A0000A504C45415345205455524E204F464626 +:1002B00020004C4F572042415454455259212000B0 +:1002C000175344001613780016131400151020005D +:1002D00015201000540A03E181867F3E186D830FBC +:1002E0000F0E0183866033186DC3198F1803C38EF8 +:1002F0006033186DE330CF1803C39E603630CDE312 +:1003000060CF3006C79E7E3E30CDB360CF300CC686 +:10031000F6603330D9B660CF33CFCCF66061B0DB56 +:100320001E60CF30D86CE6C061B0DB1E618F1998BB +:100330006CC6C063B19B0E330F0FB078C6FF7E1F33 +:100340001B061E0F05008930080238024978681420 +:100350000000F6E8DBCFC3B8AEA49B928A827B7420 +:100360006E68625C57524E4945413E3A3734312EF1 +:100370002C29272523211F1D1C1A191716151413A4 +:100380001211100F0E0D0C0B0A0908070645006824 +:10039000010000050068013801000005003801680F +:1003A000010000AB03A7030101FF030101F70300F4 +:1003B0000000070002010000030406000000000026 +:1003C000000000010204081020408001020408100F +:1003D000200102040810200404040404040404029C +:1003E00002020202020303030303030000000023CE +:1003F000002600290000000000250028002B000036 +:10040000000000240027002A00007A0211241FBEE9 +:10041000CFEFD8E0DEBFCDBF11E0A0E0B1E0E2E871 +:10042000F4E302C005900D92A835B107D9F723E097 +:10043000A8E5B1E001C01D92A03FB207E1F712E0CC +:10044000C6E0D2E004C02197FE010E94EA18C53040 +:10045000D107C9F70E9430020C943F1A0C94000097 +:100460000E9474020E94D604FDCFEF92FF920F9378 +:100470001F93CF938C018AE3E82EFF24F394C0E00E +:10048000F8018281C81778F4CE9DC001CF9D900DF0 +:10049000112420813181820F931F009711F00E9457 +:1004A0001503CF5FEDCFF801838194810E94C303D0 +:1004B00088E591E00E94700C8823D1F366E082E623 +:1004C00091E00E947A058823D1F242E064E770E06F +:1004D00088E591E00E942B0D813089F6CF911F9124 +:1004E0000F91FF90EF9008950E942C1588E591E000 +:1004F0000C9471101092A9011092A8018DE491E062 +:100500009093A7018093A6010895089508950F93ED +:100510001F93CF93DF93EC018A010E94710381E462 +:1005200091E099838883FE01E85CFE4F118300838C +:1005300020E130E040E150E061E070E0CE0148961B +:10054000DF91CF911F910F910C945A04BF92CF92DB +:10055000DF92EF92FF920F931F93CF93DF937C0173 +:1005600005E011E0C1E2D1E0B12C885C9E4F6C0146 +:100570006B2D82E691E00E949B05882309F444C01C +:10058000E881F9818A819B819C0121703327309712 +:1005900019F42115310589F095958795232B51F094 +:1005A000D701A80FB91F2D913C91E20FF31F0190C5 +:1005B000F081E02D8E0D9F1D0995D801ED91FC91E4 +:1005C000119712968D919C9113979C01217033275E +:1005D000309719F421153105B9F095958795232B9E +:1005E00069F0D6012D913C91D901A80FB91F2D9129 +:1005F0003C91E20FF31F0190F081E02DD6012D9187 +:100600003C91820F931F0995B3940C5F1F4F249662 +:10061000B7E0BB12ADCFDF91CF911F910F91FF904B +:10062000EF90DF90CF90BF9008950F931F93CF93DB +:10063000DF93EC010E94A6028E01085E1F4FC85C8A +:10064000DE4FC8010E94CC04075F1F4F0C171D0727 +:10065000C1F7DF91CF911F910F9108950F93FC0186 +:1006600071836083428323830483158216820F91F2 +:100670000895FC016583468308951F93CF93DF930C +:10068000EC0140E06B8186EA91E00E947D0680915A +:10069000DF019091E001009701F12A81222329F0E6 +:1006A0006D810E94F103182F01C01D818A8188236A +:1006B00041F06E818091DF019091E0010E94F5038D +:1006C00001C08E8128813981482F612F86EA91E00F +:1006D000DF91CF911F910C945C08DF91CF911F9116 +:1006E0000895AF92BF92CF92DF92EF92FF920F9355 +:1006F0001F93CF93DF93EC016B0187E491E0998323 +:1007000088837E0188E0E80EF11C80E1F7011192F8 +:100710008A95E9F78E01085E1F4F5E01F8ECAF1A6B +:10072000FEEFBF0A60E070E0C8010E944B04075F63 +:100730001F4F0A151B05B1F7C114D10431F040E178 +:1007400050E0B601C7010E94301A43E050E06CE26D +:1007500071E0CE010296DF91CF911F910F91FF9032 +:10076000EF90DF90CF90BF90AF900C94291AFC01CE +:1007700010821282118214821382168215821086D0 +:10078000178211860895FC0185819681218132812D +:10079000280F391F3283218327813085438154817B +:1007A000420F531F5483438341854F5F433010F4FE +:1007B00041870895118637FF03C02F5F3F4F05C063 +:1007C0002115310521F0215031093087278397FF0A +:1007D00002C0019603C0009719F0019796838583A4 +:1007E0000895FC018181860F0895FC018381860FA5 +:1007F0000895FC012581368137FF03C02E5F3F4FEE +:1008000005C02330310524F42F5F3F4F3683258305 +:100810000895FC0125813681121613061CF422501E +:10082000310906C02E3F8FEF380724F021503109DF +:10083000368325830895FC012781308537FF03C067 +:100840002E5F3F4F05C02330310524F42F5F3F4F0B +:10085000308727830895FC012781308512161306FF +:100860001CF42250310902C02150310930872783FE +:100870000895FC0111821082128214821382168262 +:1008800015820895FC0181E082837483638356831B +:100890004583089508950F931F93CF93DF93EC0141 +:1008A0008B010E94390418870F83DF91CF911F912C +:1008B0000F910895EF92FF920F931F93CF93DF93C1 +:1008C00000D01F92CDB7DEB77C018B01BA01A90120 +:1008D0000E944204F70110870783809102019091E2 +:1008E0000301A091040189839A83AB83FE01E00F89 +:1008F000F11F818190E0F701918380830F900F9029 +:100900000F90DF91CF911F910F91FF90EF9008957D +:10091000EF92FF920F93CF93DF93CDB7DEB72D9772 +:100920000FB6F894DEBF0FBECDBFFC012781308526 +:10093000233031052CF57C011986188688E790E074 +:100940009B878A871D861C86220F331FE1E0F0E01B +:10095000EC0FFD1FE20FF31F6781708500E021E0BF +:1009600041E0CE0101960E942E03F701458163818B +:10097000CE0101960E943903CE0101960E943D03EB +:100980002D960FB6F894DEBF0FBECDBFDF91CF918D +:100990000F91FF90EF900895CF93DF93EC010E94A9 +:1009A0004A04CE01DF91CF910C948804EF92FF921C +:1009B0000F931F93CF93DF93CDB7DEB7C355D140CD +:1009C0000FB6F894DEBF0FBECDBF64EB70E088E5D4 +:1009D00091E00E94F40F43E06EEA70E088E591E058 +:1009E0000E942B0D811132C08E010B5B1E4FC8017E +:1009F0000E94B7037E0185ECE81A8EEFF80A8AE0C0 +:100A0000D7011D928A95E9F7B70188E591E00E9428 +:100A1000CC10A801B701FE0131967F01CF010E94E1 +:100A20008702FE01E15BFE4F85E0DF011D928A95A2 +:100A3000E9F781E08283F182E082148303831093DB +:100A4000E0010093DF01CF010E943502CD5ADE4F55 +:100A50000FB6F894DEBF0FBECDBFDF91CF911F91CF +:100A60000F91FF90EF900895FC0188E0808389E06A +:100A7000818387E0828386E0838384E0848382E0CD +:100A8000858381E186830895FF920F931F93CF930F +:100A9000DF93EC018C01095F1F4FFF24FA9462E0A1 +:100AA00088810E940C1688810E9477162F81892BDD +:100AB00019F42F5F2F8307C0222349F02F3F11F431 +:100AC0001F8201C0FF8260E088810E940C1621967F +:100AD000C017D10721F7DF91CF911F910F91FF90A0 +:100AE0000895FC01E60FF11D81E09781913009F036 +:100AF00080E00895FC01E60FF11D81E097819F3FA2 +:100B000009F080E00895262F30E0FC01E20FF31F8A +:100B1000423030F49781915081E09E3F58F009C0F7 +:100B200087818F3F31F0642F0E946A1881E09130F5 +:100B300009F080E00895860F911DFC0187818F3FA9 +:100B400009F480E008958EBD0DB407FEFDCF8EB58B +:100B50000895DC01643508F057C0403308F054C0F4 +:100B600090969C919097E42FE595E595E595262F35 +:100B7000062E000C330B542F57709230A1F4D9017C +:100B800084E5E802A00DB11D1124AF51BE4F8C9138 +:100B900090E0052E02C0959587950A94E2F780951E +:100BA000982F91700CC0933051F41C968C9164274F +:100BB000062E000C770B682760FF03C014C091114C +:100BC00012C084E5E802200D311D1124F901EF5116 +:100BD000FE4F81E090E001C0880F5A95EAF78095BA +:100BE0009081892310C084E5E802200D311D112475 +:100BF000F901EF51FE4F81E090E001C0880F5A9556 +:100C0000EAF79081892B808308951F93CF93DF9318 +:100C1000EC01162FF89460E08F850E9448168889B1 +:100C200018161CF460E00E944816812F0E94A3054C +:100C3000888918161CF461E00E9448167894DF91A8 +:100C4000CF911F91089528EF31E0E1EEF1E0DF014F +:100C5000A9011D9241505040E1F7DC0119961C9208 +:100C600019971A961C920895CF92DF92EF92FF92F5 +:100C70000F931F93CF93DF93EC018C858F5F8C874D +:100C800081EEE82E81E0F82E10E0612F6064CE0145 +:100C90000E94050660E8CE010E94050661E08F858E +:100CA0000E944816888918161CF460E00E944816B5 +:100CB000670104E5F60181916F010E94A3050150CF +:100CC000C9F7888918161CF461E00E9448161F5F56 +:100CD000F4E5EF0EF11C1630C1F660E4CE01DF91B1 +:100CE000CF911F910F91FF90EF90DF90CF900C94D8 +:100CF0000506FC0160A361A30895FC0160A341A364 +:100D00000895EF92FF920F931F93CF93DF938C017F +:100D1000D62FF42EE22EC0E0CE1544F44F2D4C0F0A +:100D20006D2FC8010E94A905CF5FF6CFDF91CF914B +:100D30001F910F91FF90EF900895EF92FF920F9304 +:100D40001F93CF93DF938C01F62ED42FE22EC0E0B9 +:100D5000CE1544F46F2D6C0F4D2FC8010E94A905CC +:100D6000CF5FF6CFDF91CF911F910F91FF90EF9062 +:100D70000895DF92EF92FF920F931F93CF93DF932B +:100D80007C01D62FD22EC42F002E000C110B040F85 +:100D9000111D47FD1A958C2F0C2E000C990B8017F6 +:100DA000910744F42D2D4C2F6D2FC7010E949D06F5 +:100DB000CF5FF1CFDF91CF911F910F91FF90EF9017 +:100DC000DF9008958F929F92AF92BF92CF92DF9261 +:100DD000EF92FF920F931F93CF93DF937C01162F17 +:100DE000D42EC22F81E0C82EC21AB22EB194BB0CF1 +:100DF000D0E0802F8470A82E802F8270982E802FB4 +:100E00008870882E0170DC170CF04DC0C7FC04C040 +:100E1000C150B394B394CB0CDF5F8D2F880F8F5FDD +:100E2000C80EAA2071F04D2D4C0F612F6D0FC70118 +:100E30000E94A9054D2D4D0F6C2F610FC7010E9417 +:100E4000A905992071F04D2D4C1B612F6D0FC70125 +:100E50000E94A9054D2D4D1B6C2F610FC7010E94EB +:100E6000A905882071F04D2D4D0F612F6C1BC70116 +:100E70000E94A9054D2D4C0F612F6D1BC7010E94CB +:100E8000A905002309F4BFCF4D2D4D1B612F6C1B0D +:100E9000C7010E94A9054D2D4C1B612F6D1BC70179 +:100EA0000E94A905B0CFDF91CF911F910F91FF90C4 +:100EB000EF90DF90CF90BF90AF909F908F9008956C +:100EC0008F929F92AF92BF92CF92DF92EF92FF925A +:100ED0000F931F93CF93DF936C01A62E942EC22FF6 +:100EE00011E0121BF22EF194FF0C83E0B82EBE0C21 +:100EF000D1E0802F8170882EE39402708FEF8D0FE8 +:100F00008C17BCF517FD04C0C150F394F3941F0D6A +:100F10008D2F880F8F5F180F882091F02C2F220FB4 +:100F20002E0D492D4C1B6D2F6A0DC6010E948106A6 +:100F30002B2D492D4D1B6C2F6A0DC6010E94810679 +:100F4000011104C0DF5FB394B394D8CF2C2F220FCC +:100F50002E0D492D4C1B6A2D6D1BC6010E9481066A +:100F60002B2D492D4D1B6A2D6C1BC6010E9481063D +:100F7000E9CFDF91CF911F910F91FF90EF90DF901C +:100F8000CF90BF90AF909F908F9008959F92AF9217 +:100F9000BF92CF92DF92EF92FF920F931F93CF9366 +:100FA000DF936C01C62FD42FB22EAE2CAA0C922E3A +:100FB0009A18FE2CF60E292D6F2D0E949D061FEF0C +:100FC000100F1D0F292D412F6F2DC6010E949D0668 +:100FD0000A19DE0D202F4D2F6C2FC6010E948106AD +:100FE000CB0D6FEF6C0F202F4D2FC6010E94810695 +:100FF00001E02E2D4D2F6F2DC6010E94E2068E2D91 +:101000008095C80F02E02E2D4D2F6C2FC6010E9437 +:10101000E206D12FDE1904E02E2D4D2F6C2FC601D4 +:101020000E94E20608E02E2D4D2F6F2DC6010E9472 +:10103000E206DF91CF911F910F91FF90EF90DF902B +:10104000CF90BF90AF909F900895AF92BF92CF92F4 +:10105000DF92EF92FF920F931F93CF93DF936C0178 +:10106000B62EF42E122FC02FDE2DEE0CAD2EA60EB6 +:101070002E196A2D0E94B906C150CE19FD0E6FEFD0 +:101080006B0D610F6D1BEC2E01E02D2F4F2DC60156 +:101090000E94600702E02D2F4F2D6A2DC6010E948D +:1010A0006007DF91CF911F910F91FF90EF90DF903C +:1010B000CF90BF90AF9008952F923F925F926F9222 +:1010C0007F928F929F92AF92BF92CF92DF92EF92D8 +:1010D000FF920F931F93CF93DF93EC01F901E490FC +:1010E0003196849164350CF019C10E2C000CFF0868 +:1010F000062F062E000C110BF701E00FF11F1E1634 +:101100001F060CF00BC140330CF008C1A82FC42EF1 +:10111000042E000CDD085601A80EB11C87FDBA9400 +:101120001A141B040CF0FAC02E5F3F4F570197E0D2 +:10113000A90EB11CB7FE04C05701BEE0AB0EB11C36 +:10114000B3E0B594A794BA95E1F747FF0AC0A42F7E +:10115000A80FAC9CC001AD9C900D1124281B390B2D +:1011600040E08A2F0A2E000C990B840F911D47FD39 +:101170009A95C19714F0A0E3A41BF8A067FD60E066 +:10118000E535F10514F0E4E5F0E09E2FCC85C427A9 +:10119000C62E062E000CDD08F601E01BF10B8F01B8 +:1011A0004F01F7E08F229924E0E8F0E002C0F595C6 +:1011B000E7958A94E2F77E2F17FF02C0095F1F4F61 +:1011C000F3E015950795FA95E1F7200F311F542F9D +:1011D000577081E001C0880F5A95EAF7459545950B +:1011E0004595F601B4E54B02E00DF11D1124AF0168 +:1011F0004F515E4FD0E02A2EAA0F3308EE24E3941D +:10120000BB24ED2FF0E0E215F3050CF087C0F901E7 +:101210005490F1E0FF121AC0962E8A01E72F69015F +:10122000991608F072C08E2E852021F0D8018C907E +:10123000882A8C92E69531F4BFEFCB1ADB0AF601CF +:101240005490E0E893940F5F1F4FEACFF1101CC059 +:10125000782E7094962E8A01E72F6901991608F06E +:1012600054C08E2E852021F0D8018C9087208C923E +:10127000E69531F4BFEFCB1ADB0AF6015490E0E8B3 +:1012800093940F5F1F4FEACFF3E0FF1629F0962EDD +:101290008A01E72F690137C0682E6094862E8A0183 +:1012A000972E69018916D8F4E92DE52159F0D80166 +:1012B000EC917C2E782470FE02C0E82B02C0E6215F +:1012C000D801EC93969439F4BFEFCB1ADB0AF60100 +:1012D0005490E0E89E2E83940F5F1F4FE3CFCE25FE +:1012E00014C08E2E852021F0D8018C9088268C92F7 +:1012F000E69531F4BFEFCB1ADB0AF6015490E0E833 +:1013000093940F5F1F4F991660F3880F19F44C5A8E +:101310005F4F81E0DF5F2A0D3B1D73CFDF91CF91DF +:101320001F910F91FF90EF90DF90CF90BF90AF9003 +:101330009F908F907F906F905F903F902F90089537 +:10134000DC01FB0184918F5F14968C931497319686 +:10135000E491EF5F1596EC9315976E5F7F4F5F9664 +:101360007C936E935E970895EF920F93CF93DF93E4 +:10137000EC014E876D872F87E98A088B81E088878B +:1013800088A319A28F8363EC70E0CE010E94A009AC +:101390000E94271881E00E943D1885E00E944B18AA +:1013A0008CE00E94461861E08E850E940C1661E078 +:1013B0008D850E940C1661E08F850E940C1689892C +:1013C00018161CF461E00E940C16888918161CF48B +:1013D00061E00E940C16898918166CF460E00E9486 +:1013E00048166AE070E080E090E00E94061561E037 +:1013F00089890E9448168D85082E000C990BFC01E6 +:10140000E952FC4FE491F0E0EE0FFF1FEB50FC4F70 +:10141000259134913D8B2C8BFC01ED53FC4FE491D5 +:10142000EB8F8E85082E000C990BFC01E952FC4FC6 +:10143000E491F0E0EE0FFF1FEB50FC4F259134914B +:101440003B8B2A8BFC01ED53FC4FE491EA8F88899A +:10145000082E000C990BFC01E952FC4FE491F0E0DE +:10146000EE0FFF1FEB50FC4F259134913F8B2E8BDD +:10147000FC01ED53FC4FE491EC8F8F85082E000C9E +:10148000990BFC01E952FC4FE491F0E0EE0FFF1FD5 +:10149000EB50FC4F25913491398F288FFC01ED538F +:1014A000FC4FE491ED8F61E2CE010E94050664E1FC +:1014B000CE010E9405068B8587FF02C08FE78B87D0 +:1014C0006B856068CE010E94050660E2CE010E9435 +:1014D00005066CE0CE010E940506CE01DF91CF919A +:1014E0000F91EF900C9434066F927F928F929F929F +:1014F000AF92BF92CF92DF92EF92FF920F931F9322 +:10150000CF93DF93EC0164350CF084C040330CF0D2 +:1015100081C0EC81F0E031970E9FC0010F9F900DCC +:101520001124860F911D67FD9A95181619060CF067 +:1015300071C03D81842F042E000C990B039F800DF8 +:10154000911D1124181619060CF064C0D02EB42E6B +:10155000C62E88A0A62E962EE22EF12CEA2DEC198E +:101560000E2E000CFF0B8C8190E0E817F9070CF0B1 +:1015700050C00197E817F90779F0E89E9001E99EBD +:10158000300DF89E300D1124E20FF31F8E8D9F8DCC +:10159000E80FF91F149101C010E07B2C6B2C272D54 +:1015A0002B19022E000C330B8D8190E02817390780 +:1015B0006CF510FF11C081E0D81206C0472D6A2DCE +:1015C000CE010E94A9051EC00D2D2D2D462D692D81 +:1015D000CE010E94B90616C089A198A1891791F081 +:1015E00088A381E0D81206C0472D6A2DCE010E9443 +:1015F000A90507C00D2D2D2D462D692DCE010E9468 +:10160000B90688A216956D0C7394C9CF9D0CA3944E +:10161000A5CF88A2DF91CF911F910F91FF90EF90FE +:10162000DF90CF90BF90AF909F908F907F906F9002 +:1016300008950F93CF93DF93EC016A3011F428855E +:101640001EC06D3019F1262F08854A8569850E94D4 +:10165000740A28853C818985239F800D1124898700 +:101660009F81992399F0082E000C990B44E550E0D6 +:10167000239F401951091124481759073CF49D81B3 +:101680008A85299F800D11248A87198681E090E040 +:10169000DF91CF910F9108958F929F92AF92BF9259 +:1016A000CF92DF92EF92FF920F931F93CF93DF932E +:1016B000EC015C0186E8A80EB11CD5019C91992330 +:1016C00009F44DC09C3018F41CE0191B01C010E057 +:1016D000FE01EA5AFF4F81E080836E01BEE4CB0E2B +:1016E000D11C60E0C6010E9479064E01E3E58E0E32 +:1016F000911CD4018C9103E0080F9DE2F92E4F2D2F +:10170000481B410F23E0E22E24E560E0C6010E9461 +:10171000250861E0C6010E947906F401808103E09A +:10172000080F4F2D481B410F24E560E0C6010E94C1 +:10173000C607FE01E95AFF4F84E080833196D40149 +:101740008C91181B115D1083CC57DF4F6881798114 +:10175000C6010E94DD16F501808181508083DF91F2 +:10176000CF911F910F91FF90EF90DF90CF90BF909E +:10177000AF909F908F900895CF92DF92FF920F933A +:101780001F93CF93DF93FC01248D358D232B09F418 +:101790009FC0EC018C01025B1F4F40E061E0C8017B +:1017A0000E947D06FE01E95AFF4FDE01AE5ABF4F8F +:1017B0009C9185E5891B808331961082698D61300B +:1017C00009F463C028F0888D653008F074C06FC0DC +:1017D000CE0185960E94121281E0FE01EA5AFF4F67 +:1017E000808363EC70E0C8010E94A0091D8E1C8EEE +:1017F000FE01EC5AFF4F108288EAF82E6E01FAE0E3 +:10180000CF0ED11CCE010E94700C8823D9F362EB5D +:1018100072E0C8010E94DD166A8D7B8D4AE050E0BF +:10182000C8010E9490176DE972E0C8010E94DD16A0 +:101830006F2D62956F7070E04AE050E0C8010E9421 +:10184000DE1762E972E0C8010E94DD1664E0C6019D +:101850000E94710581113CC0FA94F110D3CF60E071 +:10186000CE010E94E51383B7817F846083BF83B775 +:10187000816083BF83B7816083BF889583B78E7F84 +:1018800083BF83B78E7F83BFBDCFCF58DF4F8881A3 +:101890009981AA81BB818F709927AA27BB270897B6 +:1018A000A105B10510F467E009C068E707C0882307 +:1018B00079F06B5F03C0882359F06FE2C801DF91B4 +:1018C000CF911F910F91FF90DF90CF900C94001754 +:1018D000DF91CF911F910F91FF90DF90CF900895EE +:1018E0008F929F92AF92BF92CF92DF92EF92FF9230 +:1018F0000F931F93CF93DF93EC017C0180E8E80EF8 +:10190000F11CF70180809180A280B3800E94D514E1 +:10191000861A970AA80AB90A6E01FFE7CF0ED11CF2 +:10192000F601808190E0A0E0B0E08E0105581F4FE5 +:1019300088159905AA05BB0550F4F80180819181AD +:10194000A281B381892B8A2B8B2B09F040C0F8012F +:1019500080819181A281B381892B8A2B8B2BA9F560 +:101960007E01F5E2EF0EF11CC7010E940F12C701C4 +:101970000E947B12C7010E944013CE010E944C0BB3 +:10198000CE010E94BC0B7E018EE4E80EF11CC70163 +:101990000E943406FE01EC5AFF4F8081811103C082 +:1019A000C7010E9423060E94E114F801608371833D +:1019B00082839383FE01EB58FF4FC958DF4F288184 +:1019C0003981621B730B7183608380E037C00E9492 +:1019D000D514F6012081DC01CB01820F911DA11DE0 +:1019E000B11DF70180839183A283B383FE01EF5879 +:1019F000FF4F80819181A281B3810196A11DB11D0C +:101A000080839183A283B383F801108211821282B2 +:101A100013820E94E114FE01E958FF4F6083718335 +:101A200082839383CE010E94E913CE010A960E941D +:101A30004405CE0148960E94521481E0DF91CF9177 +:101A40001F910F91FF90EF90DF90CF90BF90AF90DC +:101A50009F908F9008952F923F924F925F926F9236 +:101A60007F928F929F92AF92BF92CF92DF92EF922E +:101A7000FF920F931F93CF93DF93CDB7DEB7659798 +:101A80000FB6F894DEBF0FBECDBF6C016A8B7B8BA7 +:101A90004B83FC01EC5AFF4F10822FEF2D831C82E9 +:101AA0001D8A10E31C8A5C013AE0A30EB11C1C01E4 +:101AB00083E5280E311CBF972F01242F30E03F8390 +:101AC0002E83C601895A9F4F99878887F396FB8793 +:101AD000EA8796012A5A3F4F3F872E870297998BB4 +:101AE000888B3A973F01C6010E94700C8823D9F376 +:101AF00064E0C5010E947105012F110F110B8111C6 +:101B000044C065E0C5010E94710581113EC066E0D8 +:101B1000C5010E947105811138C02C8121114CC072 +:101B200044E063E0C5010E948305882331F03C89CD +:101B30003F5F3C8BC2010E94BD1344E061E0C501E0 +:101B40000E948305882331F08C8981508C8BC201DF +:101B50000E94BD13EC898E2F0E2E000C990B2E8146 +:101B60003F818217930731F0E7FF05C03B81315079 +:101B70003C8B01C01C8AF1018081F4E0F80F2C89B4 +:101B8000829FF0191124FD8B22C0F101F081F983AD +:101B900064E0C5010E947105882309F48CC0C2016C +:101BA0000E949113FC89FD83298121953B81239F0C +:101BB000302D112432503D8BC8013D89831B910982 +:101BC00037FD939502970CF47AC081E08C839D8950 +:101BD000090F111D97FD1A9517FF02C00F5F1F4FC8 +:101BE000F801F595E795FA83E9830981102FE885D7 +:101BF000F9851082EA85FB85008381E0EE85FF850B +:101C00008083E889F9891082EA88FB88812C912CED +:101C10002C89022E000C330B3D872C878E819F81EF +:101C20008816990609F1EC85FD85E815F90579F422 +:101C300023E0E885F9852083F1018081F02F2C894C +:101C4000289FF00D11248F2FEA85FB858083F701F3 +:101C500065917491C3010E941B17FFEF8F1A9F0AB1 +:101C600022E0E20EF11CDACF60E0C3010E947906A7 +:101C7000F10180814981FC89F89F400D1124415078 +:101C800024E560E0C3010E949D0661E0C3010E945B +:101C90007906F101808103E0080F4981FC89F89FF2 +:101CA000400D1124425083E0E82E24E560E0C3019A +:101CB0000E94C60718CFC2010E94A71375CF8D815D +:101CC00065960FB6F894DEBF0FBECDBFDF91CF9102 +:101CD0001F910F91FF90EF90DF90CF90BF90AF904A +:101CE0009F908F907F906F905F904F903F902F903C +:101CF00008950F931F93CF93DF93EC018C01025B48 +:101D00001F4FC8010E9423066AE672E0C8010E94C4 +:101D1000DD16C8010E94340683E00E944B1881E55D +:101D200091E0EEEFFFE30995FE01EC5AFF4F1082C0 +:101D300065E472E0C8010E941B17C8010E943406C6 +:101D40002A96CE010E94440564E0CE010E947105EE +:101D5000811107C062E370E080E090E00E94061508 +:101D6000F0CFDF91CF911F910F9108952F923F9265 +:101D70004F925F926F927F928F929F92AF92BF929B +:101D8000CF92DF92EF92FF920F931F93CF93DF9347 +:101D9000CDB7DEB729970FB6F894DEBF0FBECDBF23 +:101DA0003C0120E7620E711CF3012081222309F41B +:101DB00002C15A011B01998788877A9781E0808345 +:101DC000E885F985EB5AFF4F1082E885F985EC5AD2 +:101DD000FF4F1082E885F985108E8F01025B1F4F3F +:101DE00061E0C8010E947906888599858D5A9F4FC8 +:101DF0009D838C83C884D98497E5C90ED11CE8845F +:101E0000F984E8E5EE0EF11C888599858E5A9F4F7E +:101E10009A838983E885F985EF58FF4FFF83EE8326 +:101E200088849984FAE08F0E911C4884598425E2B5 +:101E3000420E511C888599850E94700C8823D1F32D +:101E4000F1018491882329F0EC81FD81F081FB83ED +:101E500001C01B8224ED32E040E060E0C8010E9436 +:101E60005C08A114B10439F04B81445F950160E036 +:101E7000C8010E945C08F60110822CE0F701208363 +:101E8000B101C8010E94DD16E981FA818081982F95 +:101E9000990F890F81958D5AF6018083EC81FD8120 +:101EA0008081982F990F890F8195835DF701808339 +:101EB000EE81FF81808184FF03C060ED72E002C08B +:101EC0006CEC72E0C8010E941B17E981FA818081E5 +:101ED000982F990F890F81958D5AF6018083F7010C +:101EE00080818F5F8083E885F98582A5882319F03A +:101EF00068EC72E002C064EC72E0C8010E941B173B +:101F0000E981FA818081982F990F890F81958D5AE7 +:101F1000F6018083F70180818F5F808360EC72E03F +:101F2000C8010E941B1765E0C4010E947105882347 +:101F300051F0E885F98562A56F5FC2010E94D31355 +:101F4000C2010E94BD1364E0C4010E9471058111A9 +:101F500013C0F3012081422F50E060E070E0EE8179 +:101F6000FF8180819181A281B38184179507A607A3 +:101F7000B707A8F02F3F99F08FEFF3018083088512 +:101F800019850B5D1F4F60E0C8010E94B011C801A8 +:101F90000E94911381E0E885F985808F0CC066E08E +:101FA000C4010E947105882309F444CF888599856E +:101FB0000E94790E35CF29960FB6F894DEBF0FBE7A +:101FC000CDBFDF91CF911F910F91FF90EF90DF90E8 +:101FD000CF90BF90AF909F908F907F906F905F90C9 +:101FE0004F903F902F90089540E050E00C94B60E33 +:101FF000E0E8F7E72591349181E02130304C09F099 +:1020000080E00895CF93DF93EC010E94F80F9E01CA +:10201000275A3F4FDE01A059BF4F882309F43CC027 +:10202000E6E9F7E78491F9018083E7E9F7E7E491CE +:10203000EC83E8E9F7E7E491ED83E9E9F7E78591D7 +:1020400094919F838E83EBE9F7E78591949199872B +:102050008887EDE9F7E7E491EBA7EEE9F7E7E4918C +:10206000EAA7EFE9F7E7E491EC93E0EAF7E7859177 +:1020700094919D8F8C8FE2EAF7E7859194919F8FE1 +:102080008E8FE4EAF7E78591949199A388A3E6EA15 +:10209000F7E78591949120C08CE3F90180831C823D +:1020A0008FEF8D8320E233E03F832E8324ED33E0F6 +:1020B0003987288791E09BA79AA78C938CEA9DE0AB +:1020C0009D8F8C8F8EED9DE09F8F8E8F84E79EE09D +:1020D00099A388A38CE39FE09BA38AA3DF91CF9170 +:1020E0000895CF92DF92EF920F93CF93DF93EC019D +:1020F000FC01E158FF4F82E38083349781E090E058 +:10210000A0E0B0E080839183A283B3833B978FEFFD +:102110008083CE010E940210CE010E94E1136FEF76 +:10212000CE010E94E5136E018AE0C80ED11CC601E3 +:102130000E943405C6010E944405CE0148960E94C3 +:1021400048148EE0E82E0FE020E14BE06DE0CE0178 +:10215000825B9F4F0E94B409A596CE010E941C117C +:1021600065E0C6010E947105882351F060E0CE0150 +:10217000DF91CF910F91EF90DF90CF900C94D3131C +:1021800040E064E473E0CE01DF91CF910F91EF90D6 +:10219000DF90CF900C94BB11CF93DF93D62FC72F36 +:1021A0000E94F80F882359F0AD2FBC2FEBE8F7E71A +:1021B00084918D933196E53987E7F807C9F7DF9168 +:1021C000CF91089550E0DA01AA0FBB1FA80FB91FE5 +:1021D0001F963C911F9750962C915097E32FF22F0A +:1021E000E60FF11DE60FF11D2591349190963C9379 +:1021F0002E935F97F90165917491FC017481769F2C +:10220000602D1124DC01A40FB51F91966C9391975A +:10221000F90185919491E92FF0E0862F90E0E8177D +:10222000F90720F4F90185919491692F769F602D2B +:10223000112492966C93089521E0FC01248324E0FC +:1022400020A723EA33E0308B278740E060E00E943C +:10225000E21061E070E083E00E948415E1EBF0E0C1 +:102260008081887F81608083F89410928000E1E80B +:10227000F0E01082109285001092840088E191E0D5 +:10228000909389008093880080818860808380811A +:1022900081608083EFE6F0E08081826080837894C3 +:1022A00008950F93FC01842F01112AC06230D9F0E8 +:1022B00050F4662399F0613019F540E0682FCF01A2 +:1022C0000F910C94E2106330A9F06430C9F464817A +:1022D000649F802D1124858F268F12C04B3008F00B +:1022E0008AE0868B0DC06481649F802D1124818FCC +:1022F000228F06C06481649F802D1124838F248FD8 +:102300000F910895FC0121110EC0648B8481849F7C +:10231000402D1124458B15A214A213A281E0878BB6 +:102320008093E503108E08958091E503882319F0CA +:102330008091E20301C080E08093B4000895FC0125 +:1023400061110DC0178A158A14A213A2108E109263 +:10235000E2031092E3031092E5030C9494110895A4 +:10236000CF93DF93611104C0EC010E949F11198289 +:10237000DF91CF9108950F931F93CF93DF93411176 +:1023800010C08B01EC0160E00E94B0111E870D8728 +:102390001B8A1A8A81E0898389E08E8B198E1B8EB5 +:1023A0001D8EDF91CF911F910F910895CF93DF93F1 +:1023B000DC01611131C08C91882371F111968C91EF +:1023C0001197811129C019968C91199717962C9104 +:1023D000179718969C911897E22FF92FE80FF11D87 +:1023E000E80FF11D259134912F3F8FEF380711F43D +:1023F0001C9212C0ED013C873327220F331FEA8560 +:10240000FB85E20FF31F6591749140E0CD010E94BE +:10241000BB1189858F5F8987DF91CF91089560E037 +:102420000C94D61160E00C94B0110F93CF93DF930E +:10243000EC0161115CC08981882309F458C08D8941 +:10244000811155C02D853E85EA89FB89EE0FFF1F5E +:10245000E20FF31F85919491009701F589898130EE +:1024600021F41B8A1A8AF90110C01982888160E060 +:10247000882371F0CE010E94D611EA89FB89EE0F04 +:10248000FF1F8D859E85E80FF91F8591949106C0E9 +:10249000CE01DF91CF910F910C949F11BC017695E5 +:1024A00067957695679580FF17C0AC0186E05695D5 +:1024B00047958A95E1F7292F26952695269520514F +:1024C0004F716F7000E0CE010E945111EA89FB89C3 +:1024D0003196FB8BEA8BD3CF492F6F7320E0CE016F +:1024E0000E9482118A899B8901969B8B8A8BDF913E +:1024F000CF910F91089560E00C941512CF93DF9364 +:10250000EC016111BAC08F89882309F4B6C09D8996 +:10251000911105C0CE01DF91CF910C949F11915084 +:102520009D8B8DA1811139C02BA13CA12F5F3F4F05 +:10253000C901880F991FEF8DF8A1E80FF91F659168 +:102540007491862F87708EA3AB0163E056954795F3 +:102550006A95E1F7CA0196958795972F9695969576 +:102560009FA38F739C81899F802D11248DA341701F +:102570004093E1033CA32BA389A190E028173907DE +:1025800060F02AA1222329F0821B91099CA38BA32E +:1025900004C060E0CE010E949F118DA181508DA3E7 +:1025A000888D21E0280F288F4C893FA1340F8C851E +:1025B000380F3A836B8D662361F070E0822F022E14 +:1025C000000C990B0E948A188C8D869F300D112467 +:1025D0003A838A8190E0CB966BE370E00E948A1880 +:1025E0008A833E893B83698D662371F0062E000C39 +:1025F000770B822F022E000C990B0E948A188A8D6D +:10260000869F300D11243B836D8D662389F0822FC8 +:10261000220F990B70E00E948A18CB0162E070E0F3 +:102620000E948A182E8D9B81289F900D11249B83D8 +:102630004F3341F08B818A300CF089E087FD80E0D8 +:102640008B8301C01B82F894EA81F0E0EE5AFC4FC4 +:10265000E491E093E4038D8198A5899F802D112456 +:102660009B81899F802D11249EA1899F802D1124FB +:102670008093E3038093E2037894DF91CF910895F0 +:1026800060E00C947E126091E303662329F180914F +:10269000E6038F5F8093E6039091E4038917E0F0EF +:1026A00081E09091E503911180E08093E503109221 +:1026B000E6038091E103882369F08091000193E4AF +:1026C000899F802D1124895B809300010E946A18E4 +:1026D0009093E2030C94941108951F920F920FB6F9 +:1026E0000F9211242F933F934F935F936F937F9398 +:1026F0008F939F93AF93BF93EF93FF930E944313E6 +:10270000FF91EF91BF91AF919F918F917F916F91C9 +:102710005F914F913F912F910F900FBE0F901F909F +:102720001895CF93DF93EC0160E00E94B0118BE924 +:1027300093E09E878D871B8A1A8A81E0898389E0CE +:102740008E8B198E1B8E1D8EDF91CF910895CF93A6 +:10275000DF93EC0160E00E94B01183E993E09E8773 +:102760008D871B8A1A8A81E0898389E08E8B198E76 +:102770001B8E1D8EDF91CF910895CF93DF93EC01D7 +:1027800060E00E94B0118DE893E09E878D871B8AE0 +:102790001A8A81E0898389E08E8B198E1B8E1D8EAB +:1027A000DF91CF910895FC01262F660F330B9681A0 +:1027B000692F70E06F5F7F4FC9010E948A1885837F +:1027C000089521E0FC012083089570E085E00C94D9 +:1027D0008415AF92BF92CF92DF92EF92FF920F9348 +:1027E0001F93CF93DF93EC0189819A812FE0289F7B +:1027F0008001299F100D112485E10E946715800F2B +:10280000911F24E0969587952A95E1F79A8389830D +:102810002881222391F1EC81AD80B12CC12CD12CE7 +:10282000A885B9857D0100E010E06E817F819B0164 +:1028300040E050E08617970728F0BC01A817B907B9 +:1028400008F4BD0180E090E01F921F921F92EF9369 +:102850000E94E5176B830F900F900F900F9070E020 +:1028600085E0DF91CF911F910F91FF90EF90DF9066 +:10287000CF90BF90AF900C948415DF91CF911F91B2 +:102880000F91FF90EF90DF90CF90BF90AF900895A1 +:10289000FC018CE39FE09383828384E0818381E069 +:1028A00084870895CF93DF93FC0124813581232B06 +:1028B00079F1EC0184858F7141F584E10E946715FF +:1028C000BC01990F880B990B0E94301926EE3FE34B +:1028D0004EEC50E40E94BC190E94FF189B017B83C0 +:1028E0006A83672B81F084E08983FE01349680E05F +:1028F000419151912417350710F4898309C08F5FE6 +:102900008430B1F702C08FEF89838C858F5F8C870D +:10291000DF91CF9108951F920F920FB60F9211245D +:102920002F933F938F939F93AF93BF938091E8032F +:102930009091E903A091EA03B091EB033091E70392 +:1029400023E0230F2D3720F40196A11DB11D05C0F2 +:1029500026E8230F0296A11DB11D2093E703809363 +:10296000E8039093E903A093EA03B093EB0380910B +:10297000EC039091ED03A091EE03B091EF0301966B +:10298000A11DB11D8093EC039093ED03A093EE0382 +:10299000B093EF03BF91AF919F918F913F912F9192 +:1029A0000F900FBE0F901F9018952FB7F89460915D +:1029B000E8037091E9038091EA039091EB032FBF44 +:1029C00008953FB7F8948091EC039091ED03A091A6 +:1029D000EE03B091EF0326B5A89B05C02F3F19F079 +:1029E0000196A11DB11D3FBFBA2FA92F982F88278F +:1029F000820F911DA11DB11DBC01CD0142E0660FEA +:102A0000771F881F991F4A95D1F70895CF92DF92BB +:102A1000EF92FF92CF93DF936B017C010E94E11450 +:102A2000EB01C114D104E104F10479F00E94E11436 +:102A30006C1B7D0B683E7340A0F381E0C81AD1087F +:102A4000E108F108C851DC4FECCFDF91CF91FF9046 +:102A5000EF90DF90CF900895789484B5826084BD24 +:102A600084B5816084BD85B5826085BD85B5816092 +:102A700085BDEEE6F0E0808181608083E1E8F0E0F2 +:102A80001082808182608083808181608083E0E821 +:102A9000F0E0808181608083E1EBF0E08081846000 +:102AA0008083E0EBF0E0808181608083EAE7F0E002 +:102AB0008081846080838081826080838081816066 +:102AC00080838081806880831092C10008958E3059 +:102AD00008F08E502091010190E4299F900111246B +:102AE0008770822B80937C0080917A008064809331 +:102AF0007A0080917A0086FDFCCF80917800209149 +:102B0000790090E0922B08951F93CF93DF93182FB5 +:102B1000EB0161E00E940C16209711F460E004C004 +:102B2000CF3FD10539F461E0812FDF91CF911F9123 +:102B30000C944816E12FF0E0E155FC4FE491E330AE +:102B4000F9F048F4E130B9F0E230A1F584B58062E3 +:102B500084BDC8BD34C0E630E9F0E73019F1E43097 +:102B600049F580918000806280938000D0938B0033 +:102B7000C0938A0024C084B5806884BDC7BD1FC0CF +:102B800080918000806880938000D0938900C093FA +:102B9000880015C08091B00080688093B000C09319 +:102BA000B3000DC08091B00080628093B000C093EC +:102BB000B40005C0C038D1050CF0B5CFAFCFDF9160 +:102BC000CF911F910895833081F028F4813099F0DE +:102BD0008230A1F008958630A9F08730B9F08430B2 +:102BE000D1F4809180008F7D03C0809180008F7729 +:102BF00080938000089584B58F7702C084B58F7D5F +:102C000084BD08958091B0008F7703C08091B0009B +:102C10008F7D8093B0000895CF93DF9390E0FC0107 +:102C2000ED53FC4F2491FC01E952FC4F8491882321 +:102C300061F190E0880F991FFC01E150FC4FC591B4 +:102C4000D491FC01EB50FC4FA591B491611109C0E6 +:102C50009FB7F8948881209582238883EC912E2356 +:102C60000BC0623061F49FB7F8948881322F3095A1 +:102C700083238883EC912E2B2C939FBF06C08FB7A4 +:102C8000F894E8812E2B28838FBFDF91CF91089590 +:102C90001F93CF93DF93282F30E0F901E155FC4FCC +:102CA0008491F901ED53FC4FD491F901E952FC4FA5 +:102CB000C491CC23C1F0162F81110E94E315EC2F93 +:102CC000F0E0EE0FFF1FEB50FC4FA591B4919FB7C2 +:102CD000F894111104C08C91D095D82302C0EC91C6 +:102CE000DE2BDC939FBFDF91CF911F910895CF938F +:102CF000DF93282F30E0F901E155FC4F8491F90171 +:102D0000ED53FC4FD491F901E952FC4FC491CC230F +:102D100091F081110E94E315EC2FF0E0EE0FFF1F00 +:102D2000E551FC4FA591B491EC91ED2381E090E049 +:102D300021F480E002C080E090E0DF91CF9108951F +:102D4000CF92DF92EF92FF920F931F93CF93DF9377 +:102D50006C01EB017B01E40EF51E00E010E0CE15E6 +:102D6000DF0561F06991D601ED91FC910190F08150 +:102D7000E02DC6010995080F191FF1CFC801DF9199 +:102D8000CF911F910F91FF90EF90DF90CF9008951A +:102D90006115710579F0FB0101900020E9F7319789 +:102DA000AF01461B570BDC01ED91FC910280F381D2 +:102DB000E02D099480E090E00895EF92FF920F9348 +:102DC0001F93CF93DF937C01FB0100E010E064913F +:102DD000EF012196662361F0D701ED91FC910190FE +:102DE000F081E02DC7010995080F191FFE01EFCFF3 +:102DF000C801DF91CF911F910F91FF90EF9008953F +:102E0000DC01ED91FC910190F081E02D09940F938C +:102E10001F93CF93DF93EC016DE00E9400178C01AC +:102E20006AE0CE010E940017800F911FDF91CF91C1 +:102E30001F910F9108950F931F93CF93DF93EC0190 +:102E40000E94DD168C01CE010E940717800F911F92 +:102E5000DF91CF911F910F9108958F929F92AF9222 +:102E6000BF92CF92DF92EF92FF920F931F93CF9377 +:102E7000DF93CDB7DEB7A1970FB6F894DEBF0FBED4 +:102E8000CDBF6C01142FE52FCB01022F19A22230E8 +:102E900008F40AE07E0121E2E20EF11C802E912C62 +:102EA000A12CB12C612F7E2FA50194010E949E18A8 +:102EB000029F1019112481E0E81AF1081A3014F465 +:102EC000105D01C0195CF7011083122FE32FCA01B6 +:102ED000232B242B252B31F7B701C6010E94C816DE +:102EE000A1960FB6F894DEBF0FBECDBFDF91CF9194 +:102EF0001F910F91FF90EF90DF90CF90BF90AF9018 +:102F00009F908F9008952115310541F4DC01ED91DA +:102F1000FC910190F081E02D642F09940C942D1701 +:102F20009A01AB0160E070E00C948317CF92DF92BE +:102F3000EF92FF920F931F93CF93DF9321153105EB +:102F400081F4DC01ED91FC910190F081E02D642F82 +:102F5000DF91CF911F910F91FF90EF90DF90CF9075 +:102F600009942A30310501F577FF1DC06A017B0104 +:102F7000EC016DE20E9400178C0144275527BA012D +:102F80004C195D096E097F092AE0CE010E942D17B8 +:102F9000800F911FDF91CF911F910F91FF90EF90C4 +:102FA000DF90CF9008952AE0DF91CF911F910F918C +:102FB000FF90EF90DF90CF900C942D179A01AB010A +:102FC000770F660B770B0C9496174F925F926F9268 +:102FD0007F92AF92BF92CF92DF92EF92FF920F93C8 +:102FE0001F93CF93DF93CDB7DEB729013A019B0141 +:102FF000AC01241935094609570989899A89AB8991 +:10300000BC89BC01CD016A197B098C099D090E940C +:103010005A18A801970124193509460957090E9431 +:10302000C018CA01B9016A0D7B1D8C1D9D1DDF9161 +:10303000CF911F910F91FF90EF90DF90CF90BF90B5 +:10304000AF907F906F905F904F900895089561E0EA +:103050008AE00E94481661E08AE00E940C168CB556 +:1030600080618CBD8CB580648CBD61E08DE00E9478 +:103070000C1661E08BE00C940C16811103C08CB52A +:10308000806202C08CB58F7D8CBD08959CB5937F06 +:10309000892B8CBD08959CB59C7F282F2370922B83 +:1030A0009CBD2DB582FB992790F9822F8E7F892BAD +:1030B0008DBD0895DB018F939F930E94DF18BF9110 +:1030C000AF91A29F800D911DA39F900DB29F900D77 +:1030D00011240895991B79E004C0991F961708F0F0 +:1030E000961B881F7A95C9F780950895AA1BBB1B6C +:1030F00051E107C0AA1FBB1FA617B70710F0A61BF8 +:10310000B70B881F991F5A95A9F780959095BC0118 +:10311000CD01089597FB072E16F4009407D077FD94 +:1031200009D00E94761807FC05D03EF49095819551 +:103130009F4F0895709561957F4F0895A1E21A2ED3 +:10314000AA1BBB1BFD010DC0AA1FBB1FEE1FFF1F4B +:10315000A217B307E407F50720F0A21BB30BE40B9B +:10316000F50B661F771F881F991F1A9469F76095E2 +:103170007095809590959B01AC01BD01CF0108959C +:10318000052E97FB1EF400940E94D71857FD07D018 +:103190000E949E1807FC03D04EF40C94D71850954B +:1031A0004095309521953F4F4F4F5F4F0895909533 +:1031B0008095709561957F4F8F4F9F4F08950E9426 +:1031C000F018A59F900DB49F900DA49F800D911DA8 +:1031D00011240895EE0FFF1F0590F491E02D09943E +:1031E000A29FB001B39FC001A39F700D811D112448 +:1031F000911DB29F700D811D1124911D08950E9493 +:103200009B1988F09F5798F0B92F9927B751B0F0C4 +:10321000E1F0660F771F881F991F1AF0BA95C9F75A +:1032200014C0B13091F00E94B519B1E008950C942A +:10323000B519672F782F8827B85F39F0B93FCCF3DD +:10324000869577956795B395D9F73EF490958095D7 +:10325000709561957F4F8F4F9F4F0895E89409C0F7 +:1032600097FB3EF490958095709561957F4F8F4FB9 +:103270009F4F9923A9F0F92F96E9BB279395F695CF +:10328000879577956795B795F111F8CFFAF4BB0F4D +:1032900011F460FF1BC06F5F7F4F8F4F9F4F16C0B1 +:1032A000882311F096E911C0772321F09EE8872F3B +:1032B000762F05C0662371F096E8862F70E060E0F7 +:1032C0002AF09A95660F771F881FDAF7880F969570 +:1032D000879597F9089597F99F6780E870E060E017 +:1032E00008959FEF80EC089500240A94161617069F +:1032F00018060906089500240A94121613061406E7 +:1033000005060895092E0394000C11F4882352F049 +:10331000BB0F40F4BF2B11F460FF04C06F5F7F4F01 +:103320008F4F9F4F089557FD9058440F551F59F0E8 +:103330005F3F71F04795880F97FB991F61F09F3FA2 +:1033400079F087950895121613061406551FF2CFCB +:103350004695F1DF08C0161617061806991FF1CF1B +:1033600086957105610508940895E894BB27662742 +:103370007727CB0197F908950E94CF190C948219F1 +:103380000E94741938F00E947B1920F0952311F0E7 +:103390000C946B190C94711911240C94B6190E9499 +:1033A000931970F3959FC1F3950F50E0551F629FDD +:1033B000F001729FBB27F00DB11D639FAA27F00D8E +:1033C000B11DAA1F649F6627B00DA11D661F829FB5 +:1033D0002227B00DA11D621F739FB00DA11D621F9A +:1033E000839FA00D611D221F749F3327A00D611DB7 +:1033F000231F849F600D211D822F762F6A2F112499 +:103400009F5750409AF0F1F088234AF0EE0FFF1FCB +:10341000BB1F661F771F881F91505040A9F79E3F22 +:10342000510580F00C946B190C94B6195F3FE4F3CE +:10343000983ED4F3869577956795B795F795E79578 +:103440009F5FC1F7FE2B880F911D9695879597F981 +:103450000895DC0101C06D9341505040E0F708959C +:10346000FB01DC014150504048F001900D920020DA +:10347000C9F701C01D9241505040E0F70895F894FB +:02348000FFCF7C +:103482000101001923F90300001B040000090400D4 +:10349200002B0400000000000000000000000000FB +:1034A200000000000000000000000000000000001A +:1034B20000860200008502000000000000000000FB +:1034C20000850200000000261800000000190BA071 +:0834D200164C4F414445520025 +:040000030000046095 :00000001FF diff --git a/Exe/POCKET.MAP b/Exe/POCKET.MAP index 0a1d1a9..d547e24 100644 --- a/Exe/POCKET.MAP +++ b/Exe/POCKET.MAP @@ -1,9 +1,9 @@ Archive member included to satisfy reference by file (symbol) ../lib/libgamebuino.a(Buttons.o) - Obj/HumanPlayer.o (_ZN7Buttons7pressedEh) + Obj/Game.o (_ZN7Buttons8releasedEh) ../lib/libgamebuino.a(Display.o) - Obj/Sprite.o (_ZN7Display8setColorEa) + Obj/Sprite.o (_ZN7Display8setColorEaa) ../lib/libgamebuino.a(font3x5.o) ../lib/libgamebuino.a(Display.o) (font3x5) ../lib/libgamebuino.a(Gamebuino.o) @@ -191,8 +191,6 @@ Discarded input sections .text 0x0000000000000000 0x0 Obj/Camera.o .data 0x0000000000000000 0x0 Obj/Camera.o .bss 0x0000000000000000 0x0 Obj/Camera.o - .text._ZN6Camera14getCoordinatesEPiS0_ - 0x0000000000000000 0x2c Obj/Camera.o .text 0x0000000000000000 0x0 Obj/BaseUnit.o .data 0x0000000000000000 0x0 Obj/BaseUnit.o .bss 0x0000000000000000 0x0 Obj/BaseUnit.o @@ -207,8 +205,6 @@ Discarded input sections .bss 0x0000000000000000 0x0 ../lib/libgamebuino.a(Buttons.o) .text._ZN7Buttons4heldEhh 0x0000000000000000 0x1c ../lib/libgamebuino.a(Buttons.o) - .text._ZN7Buttons8timeHeldEh - 0x0000000000000000 0x10 ../lib/libgamebuino.a(Buttons.o) .group 0x0000000000000000 0x8 ../lib/libgamebuino.a(Display.o) .group 0x0000000000000000 0x8 ../lib/libgamebuino.a(Display.o) .group 0x0000000000000000 0x8 ../lib/libgamebuino.a(Display.o) @@ -1142,7 +1138,7 @@ END GROUP .rela.plt *(.rela.plt) -.text 0x0000000000000000 0x322c +.text 0x0000000000000000 0x3482 *(.vectors) .vectors 0x0000000000000000 0x68 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/crtatmega328p.o 0x0000000000000000 __vectors @@ -1164,561 +1160,584 @@ END GROUP 0x000000000000006f 0x5 Obj/Game.o .progmem.data._ZZL9GamePausevE20astrPauseMenuOptions 0x0000000000000074 0x4 Obj/Game.o + .progmem.data._ZL17au8PeasantSprData + 0x0000000000000078 0xa Obj/Unit.o .progmem.data._ZZ8MainMenuvE20strMainMenuOptions_0 - 0x0000000000000078 0x13 Obj/Menu.o + 0x0000000000000082 0x13 Obj/Menu.o .progmem.data._ZZ8MainMenuvE20strMainMenuOptions_1 - 0x000000000000008b 0x11 Obj/Menu.o + 0x0000000000000095 0x11 Obj/Menu.o .progmem.data._ZZ8MainMenuvE20strMainMenuOptions_2 - 0x000000000000009c 0x8 Obj/Menu.o + 0x00000000000000a6 0x8 Obj/Menu.o .progmem.data._ZZ8MainMenuvE19astrMainMenuOptions - 0x00000000000000a4 0x6 Obj/Menu.o + 0x00000000000000ae 0x6 Obj/Menu.o .progmem.data._ZZ8MainMenuvE3__c - 0x00000000000000aa 0xf Obj/Menu.o + 0x00000000000000b4 0xf Obj/Menu.o .progmem.data.font3x5 - 0x00000000000000b9 0x182 ../lib/libgamebuino.a(font3x5.o) - 0x00000000000000b9 font3x5 + 0x00000000000000c3 0x182 ../lib/libgamebuino.a(font3x5.o) + 0x00000000000000c3 font3x5 .progmem.data._ZZN9Gamebuino10changeGameEvE3__c_0 - 0x000000000000023b 0x25 ../lib/libgamebuino.a(Gamebuino.o) + 0x0000000000000245 0x25 ../lib/libgamebuino.a(Gamebuino.o) .progmem.data._ZZN9Gamebuino10changeGameEvE3__c - 0x0000000000000260 0x28 ../lib/libgamebuino.a(Gamebuino.o) + 0x000000000000026a 0x28 ../lib/libgamebuino.a(Gamebuino.o) .progmem.data._ZZN9Gamebuino14displayBatteryEvE3__c_1 - 0x0000000000000288 0xb ../lib/libgamebuino.a(Gamebuino.o) + 0x0000000000000292 0xb ../lib/libgamebuino.a(Gamebuino.o) .progmem.data._ZZN9Gamebuino14displayBatteryEvE3__c_0 - 0x0000000000000293 0x15 ../lib/libgamebuino.a(Gamebuino.o) + 0x000000000000029d 0x15 ../lib/libgamebuino.a(Gamebuino.o) .progmem.data._ZZN9Gamebuino14displayBatteryEvE3__c - 0x00000000000002a8 0xe ../lib/libgamebuino.a(Gamebuino.o) + 0x00000000000002b2 0xe ../lib/libgamebuino.a(Gamebuino.o) .progmem.data._ZZN9Gamebuino11titleScreenEPK19__FlashStringHelperPKhE3__c_3 - 0x00000000000002b6 0x4 ../lib/libgamebuino.a(Gamebuino.o) + 0x00000000000002c0 0x4 ../lib/libgamebuino.a(Gamebuino.o) .progmem.data._ZZN9Gamebuino11titleScreenEPK19__FlashStringHelperPKhE3__c_2 - 0x00000000000002ba 0x4 ../lib/libgamebuino.a(Gamebuino.o) + 0x00000000000002c4 0x4 ../lib/libgamebuino.a(Gamebuino.o) .progmem.data._ZZN9Gamebuino11titleScreenEPK19__FlashStringHelperPKhE3__c_1 - 0x00000000000002be 0x4 ../lib/libgamebuino.a(Gamebuino.o) + 0x00000000000002c8 0x4 ../lib/libgamebuino.a(Gamebuino.o) .progmem.data._ZZN9Gamebuino11titleScreenEPK19__FlashStringHelperPKhE3__c_0 - 0x00000000000002c2 0x4 ../lib/libgamebuino.a(Gamebuino.o) + 0x00000000000002cc 0x4 ../lib/libgamebuino.a(Gamebuino.o) .progmem.data._ZZN9Gamebuino11titleScreenEPK19__FlashStringHelperPKhE3__c - 0x00000000000002c6 0x4 ../lib/libgamebuino.a(Gamebuino.o) + 0x00000000000002d0 0x4 ../lib/libgamebuino.a(Gamebuino.o) .progmem.data._ZL13gamebuinoLogo - 0x00000000000002ca 0x70 ../lib/libgamebuino.a(Gamebuino.o) + 0x00000000000002d4 0x70 ../lib/libgamebuino.a(Gamebuino.o) .progmem.data._ZL12startupSound - 0x000000000000033a 0xe ../lib/libgamebuino.a(Gamebuino.o) + 0x0000000000000344 0xe ../lib/libgamebuino.a(Gamebuino.o) .progmem.data._ZL12_halfPeriods - 0x0000000000000348 0x3b ../lib/libgamebuino.a(Sound.o) + 0x0000000000000352 0x3b ../lib/libgamebuino.a(Sound.o) .progmem.data._ZL9playTickP - 0x0000000000000383 0x6 ../lib/libgamebuino.a(Sound.o) + 0x000000000000038d 0x6 ../lib/libgamebuino.a(Sound.o) .progmem.data._ZL17playCancelPattern - 0x0000000000000389 0x8 ../lib/libgamebuino.a(Sound.o) + 0x0000000000000393 0x8 ../lib/libgamebuino.a(Sound.o) .progmem.data._ZL13playOKPattern - 0x0000000000000391 0x8 ../lib/libgamebuino.a(Sound.o) + 0x000000000000039b 0x8 ../lib/libgamebuino.a(Sound.o) .progmem.data._ZL18defaultInstruments - 0x0000000000000399 0x4 ../lib/libgamebuino.a(Sound.o) + 0x00000000000003a3 0x4 ../lib/libgamebuino.a(Sound.o) .progmem.data._ZL15noiseInstrument - 0x000000000000039d 0x4 ../lib/libgamebuino.a(Sound.o) + 0x00000000000003a7 0x4 ../lib/libgamebuino.a(Sound.o) .progmem.data._ZL20squareWaveInstrument - 0x00000000000003a1 0x4 ../lib/libgamebuino.a(Sound.o) + 0x00000000000003ab 0x4 ../lib/libgamebuino.a(Sound.o) .progmem.data.digital_pin_to_timer_PGM - 0x00000000000003a5 0x14 ../lib/libarduino.a(wiring_digital.o) - 0x00000000000003a5 digital_pin_to_timer_PGM + 0x00000000000003af 0x14 ../lib/libarduino.a(wiring_digital.o) + 0x00000000000003af digital_pin_to_timer_PGM .progmem.data.digital_pin_to_bit_mask_PGM - 0x00000000000003b9 0x14 ../lib/libarduino.a(wiring_digital.o) - 0x00000000000003b9 digital_pin_to_bit_mask_PGM + 0x00000000000003c3 0x14 ../lib/libarduino.a(wiring_digital.o) + 0x00000000000003c3 digital_pin_to_bit_mask_PGM .progmem.data.digital_pin_to_port_PGM - 0x00000000000003cd 0x14 ../lib/libarduino.a(wiring_digital.o) - 0x00000000000003cd digital_pin_to_port_PGM + 0x00000000000003d7 0x14 ../lib/libarduino.a(wiring_digital.o) + 0x00000000000003d7 digital_pin_to_port_PGM .progmem.data.port_to_input_PGM - 0x00000000000003e1 0xa ../lib/libarduino.a(wiring_digital.o) - 0x00000000000003e1 port_to_input_PGM - .progmem.data.port_to_output_PGM 0x00000000000003eb 0xa ../lib/libarduino.a(wiring_digital.o) - 0x00000000000003eb port_to_output_PGM - .progmem.data.port_to_mode_PGM + 0x00000000000003eb port_to_input_PGM + .progmem.data.port_to_output_PGM 0x00000000000003f5 0xa ../lib/libarduino.a(wiring_digital.o) - 0x00000000000003f5 port_to_mode_PGM - 0x0000000000000400 . = ALIGN (0x2) - *fill* 0x00000000000003ff 0x1 + 0x00000000000003f5 port_to_output_PGM + .progmem.data.port_to_mode_PGM + 0x00000000000003ff 0xa ../lib/libarduino.a(wiring_digital.o) + 0x00000000000003ff port_to_mode_PGM + 0x000000000000040a . = ALIGN (0x2) + *fill* 0x0000000000000409 0x1 *(.jumptables) *(.jumptables*) *(.lowtext) *(.lowtext*) - 0x0000000000000400 __ctors_start = . + 0x000000000000040a __ctors_start = . *(.ctors) - .ctors 0x0000000000000400 0x2 Obj/System.o - 0x0000000000000402 __ctors_end = . - 0x0000000000000402 __dtors_start = . + .ctors 0x000000000000040a 0x2 Obj/System.o + 0x000000000000040c __ctors_end = . + 0x000000000000040c __dtors_start = . *(.dtors) - 0x0000000000000402 __dtors_end = . + 0x000000000000040c __dtors_end = . SORT(*)(.ctors) SORT(*)(.dtors) *(.init0) - .init0 0x0000000000000402 0x0 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/crtatmega328p.o - 0x0000000000000402 __init + .init0 0x000000000000040c 0x0 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/crtatmega328p.o + 0x000000000000040c __init *(.init0) *(.init1) *(.init1) *(.init2) - .init2 0x0000000000000402 0xc /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/crtatmega328p.o + .init2 0x000000000000040c 0xc /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/crtatmega328p.o *(.init2) *(.init3) *(.init3) *(.init4) - .init4 0x000000000000040e 0x16 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_copy_data.o) - 0x000000000000040e __do_copy_data - .init4 0x0000000000000424 0x10 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_clear_bss.o) - 0x0000000000000424 __do_clear_bss + .init4 0x0000000000000418 0x16 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_copy_data.o) + 0x0000000000000418 __do_copy_data + .init4 0x000000000000042e 0x10 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_clear_bss.o) + 0x000000000000042e __do_clear_bss *(.init4) *(.init5) *(.init5) *(.init6) - .init6 0x0000000000000434 0x16 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_ctors.o) - 0x0000000000000434 __do_global_ctors + .init6 0x000000000000043e 0x16 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_ctors.o) + 0x000000000000043e __do_global_ctors *(.init6) *(.init7) *(.init7) *(.init8) *(.init8) *(.init9) - .init9 0x000000000000044a 0x8 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/crtatmega328p.o + .init9 0x0000000000000454 0x8 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/crtatmega328p.o *(.init9) *(.text) - .text 0x0000000000000452 0x4 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/crtatmega328p.o - 0x0000000000000452 __vector_22 - 0x0000000000000452 __vector_1 - 0x0000000000000452 __vector_24 - 0x0000000000000452 __vector_12 - 0x0000000000000452 __bad_interrupt - 0x0000000000000452 __vector_6 - 0x0000000000000452 __vector_3 - 0x0000000000000452 __vector_23 - 0x0000000000000452 __vector_25 - 0x0000000000000452 __vector_13 - 0x0000000000000452 __vector_17 - 0x0000000000000452 __vector_19 - 0x0000000000000452 __vector_7 - 0x0000000000000452 __vector_5 - 0x0000000000000452 __vector_4 - 0x0000000000000452 __vector_9 - 0x0000000000000452 __vector_2 - 0x0000000000000452 __vector_21 - 0x0000000000000452 __vector_15 - 0x0000000000000452 __vector_8 - 0x0000000000000452 __vector_14 - 0x0000000000000452 __vector_10 - 0x0000000000000452 __vector_18 - 0x0000000000000452 __vector_20 - 0x0000000000000456 . = ALIGN (0x2) + .text 0x000000000000045c 0x4 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/crtatmega328p.o + 0x000000000000045c __vector_22 + 0x000000000000045c __vector_1 + 0x000000000000045c __vector_24 + 0x000000000000045c __vector_12 + 0x000000000000045c __bad_interrupt + 0x000000000000045c __vector_6 + 0x000000000000045c __vector_3 + 0x000000000000045c __vector_23 + 0x000000000000045c __vector_25 + 0x000000000000045c __vector_13 + 0x000000000000045c __vector_17 + 0x000000000000045c __vector_19 + 0x000000000000045c __vector_7 + 0x000000000000045c __vector_5 + 0x000000000000045c __vector_4 + 0x000000000000045c __vector_9 + 0x000000000000045c __vector_2 + 0x000000000000045c __vector_21 + 0x000000000000045c __vector_15 + 0x000000000000045c __vector_8 + 0x000000000000045c __vector_14 + 0x000000000000045c __vector_10 + 0x000000000000045c __vector_18 + 0x000000000000045c __vector_20 + 0x0000000000000460 . = ALIGN (0x2) *(.text.*) .text.startup.main - 0x0000000000000456 0xa Obj/main.o - 0x0000000000000456 main + 0x0000000000000460 0xa Obj/main.o + 0x0000000000000460 main .text._Z4GameRK11tGameConfig - 0x0000000000000460 0x6c Obj/Game.o - 0x0000000000000460 _Z4GameRK11tGameConfig + 0x000000000000046a 0x7e Obj/Game.o + 0x000000000000046a _Z4GameRK11tGameConfig .text._Z10SystemInitv - 0x00000000000004cc 0xc Obj/System.o - 0x00000000000004cc _Z10SystemInitv + 0x00000000000004e8 0xc Obj/System.o + 0x00000000000004e8 _Z10SystemInitv .text.startup._GLOBAL__sub_I_gb - 0x00000000000004d8 0x16 Obj/System.o + 0x00000000000004f4 0x16 Obj/System.o .text._ZN11HumanPlayer11drawHandlerEv - 0x00000000000004ee 0x2 Obj/HumanPlayer.o - 0x00000000000004ee _ZN11HumanPlayer11drawHandlerEv - 0x00000000000004ee _ZN11HumanPlayer13onBBtnPressedEv + 0x000000000000050a 0x2 Obj/HumanPlayer.o + 0x000000000000050a _ZN11HumanPlayer11drawHandlerEv + 0x000000000000050a _ZN11HumanPlayer13onBBtnPressedEv .text._ZN11HumanPlayer13onABtnPressedEv - 0x00000000000004f0 0x2 Obj/HumanPlayer.o - 0x00000000000004f0 _ZN11HumanPlayer13onABtnPressedEv - .text._ZN11HumanPlayerC2EPKc - 0x00000000000004f2 0x2c Obj/HumanPlayer.o - 0x00000000000004f2 _ZN11HumanPlayerC2EPKc - 0x00000000000004f2 _ZN11HumanPlayerC1EPKc + 0x000000000000050c 0x2 Obj/HumanPlayer.o + 0x000000000000050c _ZN11HumanPlayer13onABtnPressedEv + .text._ZN11HumanPlayerC2EPKcRK6Camera + 0x000000000000050e 0x3e Obj/HumanPlayer.o + 0x000000000000050e _ZN11HumanPlayerC2EPKcRK6Camera + 0x000000000000050e _ZN11HumanPlayerC1EPKcRK6Camera .text._ZN11HumanPlayer13buttonHandlerEv - 0x000000000000051e 0xb2 Obj/HumanPlayer.o - 0x000000000000051e _ZN11HumanPlayer13buttonHandlerEv + 0x000000000000054c 0xde Obj/HumanPlayer.o + 0x000000000000054c _ZN11HumanPlayer13buttonHandlerEv .text._ZN11HumanPlayer7handlerEv - 0x00000000000005d0 0x32 Obj/HumanPlayer.o - 0x00000000000005d0 _ZN11HumanPlayer7handlerEv - .text._ZN6SpriteC2ERKhhh - 0x0000000000000602 0x10 Obj/Sprite.o - 0x0000000000000602 _ZN6SpriteC2ERKhhh - 0x0000000000000602 _ZN6SpriteC1ERKhhh + 0x000000000000062a 0x32 Obj/HumanPlayer.o + 0x000000000000062a _ZN11HumanPlayer7handlerEv + .text._ZN6SpriteC2EPKhbhh + 0x000000000000065c 0x16 Obj/Sprite.o + 0x000000000000065c _ZN6SpriteC2EPKhbhh + 0x000000000000065c _ZN6SpriteC1EPKhbhh .text._ZN6Sprite6setPosEhh - 0x0000000000000612 0x8 Obj/Sprite.o - 0x0000000000000612 _ZN6Sprite6setPosEhh + 0x0000000000000672 0x8 Obj/Sprite.o + 0x0000000000000672 _ZN6Sprite6setPosEhh .text._ZN6Sprite4drawEv - 0x000000000000061a 0x24 Obj/Sprite.o - 0x000000000000061a _ZN6Sprite4drawEv + 0x000000000000067a 0x68 Obj/Sprite.o + 0x000000000000067a _ZN6Sprite4drawEv .text._ZN6PlayerC2EPKc - 0x000000000000063e 0x8a Obj/Player.o - 0x000000000000063e _ZN6PlayerC1EPKc - 0x000000000000063e _ZN6PlayerC2EPKc + 0x00000000000006e2 0x8c Obj/Player.o + 0x00000000000006e2 _ZN6PlayerC1EPKc + 0x00000000000006e2 _ZN6PlayerC2EPKc .text._ZN6CameraC2Ev - 0x00000000000006c8 0x1a Obj/Camera.o - 0x00000000000006c8 _ZN6CameraC1Ev - 0x00000000000006c8 _ZN6CameraC2Ev + 0x000000000000076e 0x18 Obj/Camera.o + 0x000000000000076e _ZN6CameraC1Ev + 0x000000000000076e _ZN6CameraC2Ev + .text._ZN6Camera7handlerEv + 0x0000000000000786 0x5c Obj/Camera.o + 0x0000000000000786 _ZN6Camera7handlerEv + .text._ZNK6Camera4getXEh + 0x00000000000007e2 0x8 Obj/Camera.o + 0x00000000000007e2 _ZNK6Camera4getXEh + .text._ZNK6Camera4getYEh + 0x00000000000007ea 0x8 Obj/Camera.o + 0x00000000000007ea _ZNK6Camera4getYEh .text._ZN6Camera16onLeftBtnPressedEv - 0x00000000000006e2 0x2 Obj/Camera.o - 0x00000000000006e2 _ZN6Camera16onLeftBtnPressedEv + 0x00000000000007f2 0x20 Obj/Camera.o + 0x00000000000007f2 _ZN6Camera16onLeftBtnPressedEv .text._ZN6Camera17onRightBtnPressedEv - 0x00000000000006e4 0x2 Obj/Camera.o - 0x00000000000006e4 _ZN6Camera17onRightBtnPressedEv + 0x0000000000000812 0x24 Obj/Camera.o + 0x0000000000000812 _ZN6Camera17onRightBtnPressedEv + .text._ZN6Camera14onUpBtnPressedEv + 0x0000000000000836 0x20 Obj/Camera.o + 0x0000000000000836 _ZN6Camera14onUpBtnPressedEv + .text._ZN6Camera16onDownBtnPressedEv + 0x0000000000000856 0x1c Obj/Camera.o + 0x0000000000000856 _ZN6Camera16onDownBtnPressedEv .text._ZN8BaseUnitC2Ev - 0x00000000000006e6 0xe Obj/BaseUnit.o - 0x00000000000006e6 _ZN8BaseUnitC1Ev - 0x00000000000006e6 _ZN8BaseUnitC2Ev + 0x0000000000000872 0x12 Obj/BaseUnit.o + 0x0000000000000872 _ZN8BaseUnitC1Ev + 0x0000000000000872 _ZN8BaseUnitC2Ev + .text._ZN8BaseUnit6createEjj + 0x0000000000000884 0x10 Obj/BaseUnit.o + 0x0000000000000884 _ZN8BaseUnit6createEjj .text._ZN8BaseUnit7handlerEv - 0x00000000000006f4 0x2 Obj/BaseUnit.o - 0x00000000000006f4 _ZN8BaseUnit7handlerEv + 0x0000000000000894 0x2 Obj/BaseUnit.o + 0x0000000000000894 _ZN8BaseUnit7handlerEv .text._ZN4UnitC2ENS_7tUnitIDE - 0x00000000000006f6 0x1e Obj/Unit.o - 0x00000000000006f6 _ZN4UnitC2ENS_7tUnitIDE - 0x00000000000006f6 _ZN4UnitC1ENS_7tUnitIDE - .text._ZN4Unit6createENS_7tUnitIDE - 0x0000000000000714 0x8 Obj/Unit.o - 0x0000000000000714 _ZN4Unit6createENS_7tUnitIDE + 0x0000000000000896 0x1e Obj/Unit.o + 0x0000000000000896 _ZN4UnitC2ENS_7tUnitIDE + 0x0000000000000896 _ZN4UnitC1ENS_7tUnitIDE + .text._ZN4Unit6createENS_7tUnitIDEjj + 0x00000000000008b4 0x5c Obj/Unit.o + 0x00000000000008b4 _ZN4Unit6createENS_7tUnitIDEjj .text._ZN4Unit11drawHandlerEv - 0x000000000000071c 0x5a Obj/Unit.o - 0x000000000000071c _ZN4Unit11drawHandlerEv + 0x0000000000000910 0x88 Obj/Unit.o + 0x0000000000000910 _ZN4Unit11drawHandlerEv .text._ZN4Unit7handlerEv - 0x0000000000000776 0x14 Obj/Unit.o - 0x0000000000000776 _ZN4Unit7handlerEv + 0x0000000000000998 0x14 Obj/Unit.o + 0x0000000000000998 _ZN4Unit7handlerEv .text._Z8MainMenuv - 0x000000000000078a 0x98 Obj/Menu.o - 0x000000000000078a _Z8MainMenuv + 0x00000000000009ac 0xbc Obj/Menu.o + 0x00000000000009ac _Z8MainMenuv .text._ZN7Buttons5beginEv - 0x0000000000000822 0x20 ../lib/libgamebuino.a(Buttons.o) - 0x0000000000000822 _ZN7Buttons5beginEv + 0x0000000000000a68 0x20 ../lib/libgamebuino.a(Buttons.o) + 0x0000000000000a68 _ZN7Buttons5beginEv .text._ZN7Buttons6updateEv - 0x0000000000000842 0x5a ../lib/libgamebuino.a(Buttons.o) - 0x0000000000000842 _ZN7Buttons6updateEv + 0x0000000000000a88 0x5a ../lib/libgamebuino.a(Buttons.o) + 0x0000000000000a88 _ZN7Buttons6updateEv .text._ZN7Buttons7pressedEh - 0x000000000000089c 0x12 ../lib/libgamebuino.a(Buttons.o) - 0x000000000000089c _ZN7Buttons7pressedEh + 0x0000000000000ae2 0x12 ../lib/libgamebuino.a(Buttons.o) + 0x0000000000000ae2 _ZN7Buttons7pressedEh .text._ZN7Buttons8releasedEh - 0x00000000000008ae 0x12 ../lib/libgamebuino.a(Buttons.o) - 0x00000000000008ae _ZN7Buttons8releasedEh + 0x0000000000000af4 0x12 ../lib/libgamebuino.a(Buttons.o) + 0x0000000000000af4 _ZN7Buttons8releasedEh .text._ZN7Buttons6repeatEhh - 0x00000000000008c0 0x30 ../lib/libgamebuino.a(Buttons.o) - 0x00000000000008c0 _ZN7Buttons6repeatEhh + 0x0000000000000b06 0x30 ../lib/libgamebuino.a(Buttons.o) + 0x0000000000000b06 _ZN7Buttons6repeatEhh + .text._ZN7Buttons8timeHeldEh + 0x0000000000000b36 0x10 ../lib/libgamebuino.a(Buttons.o) + 0x0000000000000b36 _ZN7Buttons8timeHeldEh .text._ZN8SPIClass8transferEh - 0x00000000000008f0 0xc ../lib/libgamebuino.a(Display.o) - 0x00000000000008f0 _ZN8SPIClass8transferEh + 0x0000000000000b46 0xc ../lib/libgamebuino.a(Display.o) + 0x0000000000000b46 _ZN8SPIClass8transferEh .text._ZN7Display9drawPixelEaa - 0x00000000000008fc 0xb8 ../lib/libgamebuino.a(Display.o) - 0x00000000000008fc _ZN7Display9drawPixelEaa + 0x0000000000000b52 0xb8 ../lib/libgamebuino.a(Display.o) + 0x0000000000000b52 _ZN7Display9drawPixelEaa .text._ZN7Display7commandEh - 0x00000000000009b4 0x3c ../lib/libgamebuino.a(Display.o) - 0x00000000000009b4 _ZN7Display7commandEh + 0x0000000000000c0a 0x3c ../lib/libgamebuino.a(Display.o) + 0x0000000000000c0a _ZN7Display7commandEh .text._ZN7Display5clearEv - 0x00000000000009f0 0x22 ../lib/libgamebuino.a(Display.o) - 0x00000000000009f0 _ZN7Display5clearEv + 0x0000000000000c46 0x22 ../lib/libgamebuino.a(Display.o) + 0x0000000000000c46 _ZN7Display5clearEv .text._ZN7Display6updateEv - 0x0000000000000a12 0x8a ../lib/libgamebuino.a(Display.o) - 0x0000000000000a12 _ZN7Display6updateEv + 0x0000000000000c68 0x8a ../lib/libgamebuino.a(Display.o) + 0x0000000000000c68 _ZN7Display6updateEv .text._ZN7Display8setColorEa - 0x0000000000000a9c 0x8 ../lib/libgamebuino.a(Display.o) - 0x0000000000000a9c _ZN7Display8setColorEa + 0x0000000000000cf2 0x8 ../lib/libgamebuino.a(Display.o) + 0x0000000000000cf2 _ZN7Display8setColorEa .text._ZN7Display8setColorEaa - 0x0000000000000aa4 0x8 ../lib/libgamebuino.a(Display.o) - 0x0000000000000aa4 _ZN7Display8setColorEaa + 0x0000000000000cfa 0x8 ../lib/libgamebuino.a(Display.o) + 0x0000000000000cfa _ZN7Display8setColorEaa .text._ZN7Display13drawFastVLineEaaa - 0x0000000000000aac 0x38 ../lib/libgamebuino.a(Display.o) - 0x0000000000000aac _ZN7Display13drawFastVLineEaaa + 0x0000000000000d02 0x38 ../lib/libgamebuino.a(Display.o) + 0x0000000000000d02 _ZN7Display13drawFastVLineEaaa .text._ZN7Display13drawFastHLineEaaa - 0x0000000000000ae4 0x38 ../lib/libgamebuino.a(Display.o) - 0x0000000000000ae4 _ZN7Display13drawFastHLineEaaa + 0x0000000000000d3a 0x38 ../lib/libgamebuino.a(Display.o) + 0x0000000000000d3a _ZN7Display13drawFastHLineEaaa .text._ZN7Display8fillRectEaaaa - 0x0000000000000b1c 0x52 ../lib/libgamebuino.a(Display.o) - 0x0000000000000b1c _ZN7Display8fillRectEaaaa + 0x0000000000000d72 0x52 ../lib/libgamebuino.a(Display.o) + 0x0000000000000d72 _ZN7Display8fillRectEaaaa .text._ZN7Display16drawCircleHelperEaaah - 0x0000000000000b6e 0xfc ../lib/libgamebuino.a(Display.o) - 0x0000000000000b6e _ZN7Display16drawCircleHelperEaaah + 0x0000000000000dc4 0xfc ../lib/libgamebuino.a(Display.o) + 0x0000000000000dc4 _ZN7Display16drawCircleHelperEaaah .text._ZN7Display16fillCircleHelperEaaaha - 0x0000000000000c6a 0xcc ../lib/libgamebuino.a(Display.o) - 0x0000000000000c6a _ZN7Display16fillCircleHelperEaaaha + 0x0000000000000ec0 0xcc ../lib/libgamebuino.a(Display.o) + 0x0000000000000ec0 _ZN7Display16fillCircleHelperEaaaha .text._ZN7Display13drawRoundRectEaaaaa - 0x0000000000000d36 0xbe ../lib/libgamebuino.a(Display.o) - 0x0000000000000d36 _ZN7Display13drawRoundRectEaaaaa + 0x0000000000000f8c 0xbe ../lib/libgamebuino.a(Display.o) + 0x0000000000000f8c _ZN7Display13drawRoundRectEaaaaa .text._ZN7Display13fillRoundRectEaaaaa - 0x0000000000000df4 0x6e ../lib/libgamebuino.a(Display.o) - 0x0000000000000df4 _ZN7Display13fillRoundRectEaaaaa + 0x000000000000104a 0x6e ../lib/libgamebuino.a(Display.o) + 0x000000000000104a _ZN7Display13fillRoundRectEaaaaa .text._ZN7Display10drawBitmapEaaPKh - 0x0000000000000e62 0x288 ../lib/libgamebuino.a(Display.o) - 0x0000000000000e62 _ZN7Display10drawBitmapEaaPKh + 0x00000000000010b8 0x288 ../lib/libgamebuino.a(Display.o) + 0x00000000000010b8 _ZN7Display10drawBitmapEaaPKh .text._ZN7Display7setFontEPKh - 0x00000000000010ea 0x28 ../lib/libgamebuino.a(Display.o) - 0x00000000000010ea _ZN7Display7setFontEPKh + 0x0000000000001340 0x28 ../lib/libgamebuino.a(Display.o) + 0x0000000000001340 _ZN7Display7setFontEPKh .text._ZN7Display5beginEaaaaa - 0x0000000000001112 0x180 ../lib/libgamebuino.a(Display.o) - 0x0000000000001112 _ZN7Display5beginEaaaaa + 0x0000000000001368 0x180 ../lib/libgamebuino.a(Display.o) + 0x0000000000001368 _ZN7Display5beginEaaaaa .text._ZN7Display8drawCharEaahh - 0x0000000000001292 0x14a ../lib/libgamebuino.a(Display.o) - 0x0000000000001292 _ZN7Display8drawCharEaahh + 0x00000000000014e8 0x14a ../lib/libgamebuino.a(Display.o) + 0x00000000000014e8 _ZN7Display8drawCharEaahh .text._ZN7Display5writeEh - 0x00000000000013dc 0x66 ../lib/libgamebuino.a(Display.o) - 0x00000000000013dc _ZN7Display5writeEh + 0x0000000000001632 0x66 ../lib/libgamebuino.a(Display.o) + 0x0000000000001632 _ZN7Display5writeEh .text._ZN9Gamebuino11updatePopupEv - 0x0000000000001442 0xe0 ../lib/libgamebuino.a(Gamebuino.o) - 0x0000000000001442 _ZN9Gamebuino11updatePopupEv + 0x0000000000001698 0xe0 ../lib/libgamebuino.a(Gamebuino.o) + 0x0000000000001698 _ZN9Gamebuino11updatePopupEv .text._ZN9Gamebuino14displayBatteryEv - 0x0000000000001522 0x168 ../lib/libgamebuino.a(Gamebuino.o) - 0x0000000000001522 _ZN9Gamebuino14displayBatteryEv + 0x0000000000001778 0x168 ../lib/libgamebuino.a(Gamebuino.o) + 0x0000000000001778 _ZN9Gamebuino14displayBatteryEv .text._ZN9Gamebuino6updateEv - 0x000000000000168a 0x176 ../lib/libgamebuino.a(Gamebuino.o) - 0x000000000000168a _ZN9Gamebuino6updateEv + 0x00000000000018e0 0x176 ../lib/libgamebuino.a(Gamebuino.o) + 0x00000000000018e0 _ZN9Gamebuino6updateEv .text._ZN9Gamebuino4menuEPKPKch - 0x0000000000001800 0x29c ../lib/libgamebuino.a(Gamebuino.o) - 0x0000000000001800 _ZN9Gamebuino4menuEPKPKch + 0x0000000000001a56 0x29c ../lib/libgamebuino.a(Gamebuino.o) + 0x0000000000001a56 _ZN9Gamebuino4menuEPKPKch .text._ZN9Gamebuino10changeGameEv - 0x0000000000001a9c 0x7a ../lib/libgamebuino.a(Gamebuino.o) - 0x0000000000001a9c _ZN9Gamebuino10changeGameEv + 0x0000000000001cf2 0x7a ../lib/libgamebuino.a(Gamebuino.o) + 0x0000000000001cf2 _ZN9Gamebuino10changeGameEv .text._ZN9Gamebuino11titleScreenEPK19__FlashStringHelperPKh - 0x0000000000001b16 0x27c ../lib/libgamebuino.a(Gamebuino.o) - 0x0000000000001b16 _ZN9Gamebuino11titleScreenEPK19__FlashStringHelperPKh + 0x0000000000001d6c 0x27c ../lib/libgamebuino.a(Gamebuino.o) + 0x0000000000001d6c _ZN9Gamebuino11titleScreenEPK19__FlashStringHelperPKh .text._ZN9Gamebuino11titleScreenEPK19__FlashStringHelper - 0x0000000000001d92 0x8 ../lib/libgamebuino.a(Gamebuino.o) - 0x0000000000001d92 _ZN9Gamebuino11titleScreenEPK19__FlashStringHelper + 0x0000000000001fe8 0x8 ../lib/libgamebuino.a(Gamebuino.o) + 0x0000000000001fe8 _ZN9Gamebuino11titleScreenEPK19__FlashStringHelper .text._ZN9Gamebuino17settingsAvailableEv - 0x0000000000001d9a 0x14 ../lib/libgamebuino.a(Gamebuino.o) - 0x0000000000001d9a _ZN9Gamebuino17settingsAvailableEv + 0x0000000000001ff0 0x14 ../lib/libgamebuino.a(Gamebuino.o) + 0x0000000000001ff0 _ZN9Gamebuino17settingsAvailableEv .text._ZN9Gamebuino12readSettingsEv - 0x0000000000001dae 0xde ../lib/libgamebuino.a(Gamebuino.o) - 0x0000000000001dae _ZN9Gamebuino12readSettingsEv + 0x0000000000002004 0xde ../lib/libgamebuino.a(Gamebuino.o) + 0x0000000000002004 _ZN9Gamebuino12readSettingsEv .text._ZN9Gamebuino5beginEv - 0x0000000000001e8c 0xb6 ../lib/libgamebuino.a(Gamebuino.o) - 0x0000000000001e8c _ZN9Gamebuino5beginEv + 0x00000000000020e2 0xb6 ../lib/libgamebuino.a(Gamebuino.o) + 0x00000000000020e2 _ZN9Gamebuino5beginEv .text._ZN9Gamebuino14getDefaultNameEPc - 0x0000000000001f42 0x2c ../lib/libgamebuino.a(Gamebuino.o) - 0x0000000000001f42 _ZN9Gamebuino14getDefaultNameEPc + 0x0000000000002198 0x2c ../lib/libgamebuino.a(Gamebuino.o) + 0x0000000000002198 _ZN9Gamebuino14getDefaultNameEPc .text._ZN5Sound7commandEhhah.part.0 - 0x0000000000001f6e 0x74 ../lib/libgamebuino.a(Sound.o) + 0x00000000000021c4 0x74 ../lib/libgamebuino.a(Sound.o) .text._ZN5Sound5beginEv - 0x0000000000001fe2 0x6a ../lib/libgamebuino.a(Sound.o) - 0x0000000000001fe2 _ZN5Sound5beginEv + 0x0000000000002238 0x6a ../lib/libgamebuino.a(Sound.o) + 0x0000000000002238 _ZN5Sound5beginEv .text._ZN5Sound7commandEhhah - 0x000000000000204c 0x62 ../lib/libgamebuino.a(Sound.o) - 0x000000000000204c _ZN5Sound7commandEhhah + 0x00000000000022a2 0x62 ../lib/libgamebuino.a(Sound.o) + 0x00000000000022a2 _ZN5Sound7commandEhhah .text._ZN5Sound8playNoteEhhh - 0x00000000000020ae 0x24 ../lib/libgamebuino.a(Sound.o) - 0x00000000000020ae _ZN5Sound8playNoteEhhh + 0x0000000000002304 0x24 ../lib/libgamebuino.a(Sound.o) + 0x0000000000002304 _ZN5Sound8playNoteEhhh .text._ZN5Sound12updateOutputEv - 0x00000000000020d2 0x16 ../lib/libgamebuino.a(Sound.o) - 0x00000000000020d2 _ZN5Sound12updateOutputEv + 0x0000000000002328 0x16 ../lib/libgamebuino.a(Sound.o) + 0x0000000000002328 _ZN5Sound12updateOutputEv .text._ZN5Sound8stopNoteEh - 0x00000000000020e8 0x22 ../lib/libgamebuino.a(Sound.o) - 0x00000000000020e8 _ZN5Sound8stopNoteEh + 0x000000000000233e 0x22 ../lib/libgamebuino.a(Sound.o) + 0x000000000000233e _ZN5Sound8stopNoteEh .text._ZN5Sound11stopPatternEh - 0x000000000000210a 0x16 ../lib/libgamebuino.a(Sound.o) - 0x000000000000210a _ZN5Sound11stopPatternEh + 0x0000000000002360 0x16 ../lib/libgamebuino.a(Sound.o) + 0x0000000000002360 _ZN5Sound11stopPatternEh .text._ZN5Sound11playPatternEPKjh - 0x0000000000002120 0x36 ../lib/libgamebuino.a(Sound.o) - 0x0000000000002120 _ZN5Sound11playPatternEPKjh + 0x0000000000002376 0x36 ../lib/libgamebuino.a(Sound.o) + 0x0000000000002376 _ZN5Sound11playPatternEPKjh .text._ZN5Sound11updateTrackEh - 0x0000000000002156 0x72 ../lib/libgamebuino.a(Sound.o) - 0x0000000000002156 _ZN5Sound11updateTrackEh + 0x00000000000023ac 0x72 ../lib/libgamebuino.a(Sound.o) + 0x00000000000023ac _ZN5Sound11updateTrackEh .text._ZN5Sound11updateTrackEv - 0x00000000000021c8 0x6 ../lib/libgamebuino.a(Sound.o) - 0x00000000000021c8 _ZN5Sound11updateTrackEv + 0x000000000000241e 0x6 ../lib/libgamebuino.a(Sound.o) + 0x000000000000241e _ZN5Sound11updateTrackEv .text._ZN5Sound11stopPatternEv - 0x00000000000021ce 0x6 ../lib/libgamebuino.a(Sound.o) - 0x00000000000021ce _ZN5Sound11stopPatternEv + 0x0000000000002424 0x6 ../lib/libgamebuino.a(Sound.o) + 0x0000000000002424 _ZN5Sound11stopPatternEv .text._ZN5Sound13updatePatternEh - 0x00000000000021d4 0xcc ../lib/libgamebuino.a(Sound.o) - 0x00000000000021d4 _ZN5Sound13updatePatternEh + 0x000000000000242a 0xcc ../lib/libgamebuino.a(Sound.o) + 0x000000000000242a _ZN5Sound13updatePatternEh .text._ZN5Sound13updatePatternEv - 0x00000000000022a0 0x6 ../lib/libgamebuino.a(Sound.o) - 0x00000000000022a0 _ZN5Sound13updatePatternEv + 0x00000000000024f6 0x6 ../lib/libgamebuino.a(Sound.o) + 0x00000000000024f6 _ZN5Sound13updatePatternEv .text._ZN5Sound10updateNoteEh - 0x00000000000022a6 0x184 ../lib/libgamebuino.a(Sound.o) - 0x00000000000022a6 _ZN5Sound10updateNoteEh + 0x00000000000024fc 0x184 ../lib/libgamebuino.a(Sound.o) + 0x00000000000024fc _ZN5Sound10updateNoteEh .text._ZN5Sound10updateNoteEv - 0x000000000000242a 0x6 ../lib/libgamebuino.a(Sound.o) - 0x000000000000242a _ZN5Sound10updateNoteEv + 0x0000000000002680 0x6 ../lib/libgamebuino.a(Sound.o) + 0x0000000000002680 _ZN5Sound10updateNoteEv .text._ZN5Sound14generateOutputEv - 0x0000000000002430 0x54 ../lib/libgamebuino.a(Sound.o) - 0x0000000000002430 _ZN5Sound14generateOutputEv + 0x0000000000002686 0x54 ../lib/libgamebuino.a(Sound.o) + 0x0000000000002686 _ZN5Sound14generateOutputEv .text.__vector_11 - 0x0000000000002484 0x48 ../lib/libgamebuino.a(Sound.o) - 0x0000000000002484 __vector_11 + 0x00000000000026da 0x48 ../lib/libgamebuino.a(Sound.o) + 0x00000000000026da __vector_11 .text._ZN5Sound6playOKEv - 0x00000000000024cc 0x2c ../lib/libgamebuino.a(Sound.o) - 0x00000000000024cc _ZN5Sound6playOKEv + 0x0000000000002722 0x2c ../lib/libgamebuino.a(Sound.o) + 0x0000000000002722 _ZN5Sound6playOKEv .text._ZN5Sound10playCancelEv - 0x00000000000024f8 0x2c ../lib/libgamebuino.a(Sound.o) - 0x00000000000024f8 _ZN5Sound10playCancelEv + 0x000000000000274e 0x2c ../lib/libgamebuino.a(Sound.o) + 0x000000000000274e _ZN5Sound10playCancelEv .text._ZN5Sound8playTickEv - 0x0000000000002524 0x2c ../lib/libgamebuino.a(Sound.o) - 0x0000000000002524 _ZN5Sound8playTickEv + 0x000000000000277a 0x2c ../lib/libgamebuino.a(Sound.o) + 0x000000000000277a _ZN5Sound8playTickEv .text._ZN5Sound9setVolumeEa - 0x0000000000002550 0x1c ../lib/libgamebuino.a(Sound.o) - 0x0000000000002550 _ZN5Sound9setVolumeEa + 0x00000000000027a6 0x1c ../lib/libgamebuino.a(Sound.o) + 0x00000000000027a6 _ZN5Sound9setVolumeEa .text._ZN9Backlight5beginEv - 0x000000000000256c 0x8 ../lib/libgamebuino.a(Backlight.o) - 0x000000000000256c _ZN9Backlight5beginEv + 0x00000000000027c2 0x8 ../lib/libgamebuino.a(Backlight.o) + 0x00000000000027c2 _ZN9Backlight5beginEv .text._ZN9Backlight3setEh - 0x0000000000002574 0x8 ../lib/libgamebuino.a(Backlight.o) - 0x0000000000002574 _ZN9Backlight3setEh + 0x00000000000027ca 0x8 ../lib/libgamebuino.a(Backlight.o) + 0x00000000000027ca _ZN9Backlight3setEh .text._ZN9Backlight6updateEv - 0x000000000000257c 0xbe ../lib/libgamebuino.a(Backlight.o) - 0x000000000000257c _ZN9Backlight6updateEv + 0x00000000000027d2 0xbe ../lib/libgamebuino.a(Backlight.o) + 0x00000000000027d2 _ZN9Backlight6updateEv .text._ZN7Battery5beginEv - 0x000000000000263a 0x14 ../lib/libgamebuino.a(Battery.o) - 0x000000000000263a _ZN7Battery5beginEv + 0x0000000000002890 0x14 ../lib/libgamebuino.a(Battery.o) + 0x0000000000002890 _ZN7Battery5beginEv .text._ZN7Battery6updateEv - 0x000000000000264e 0x72 ../lib/libgamebuino.a(Battery.o) - 0x000000000000264e _ZN7Battery6updateEv + 0x00000000000028a4 0x72 ../lib/libgamebuino.a(Battery.o) + 0x00000000000028a4 _ZN7Battery6updateEv .text.__vector_16 - 0x00000000000026c0 0x94 ../lib/libarduino.a(wiring.o) - 0x00000000000026c0 __vector_16 - .text.millis 0x0000000000002754 0x18 ../lib/libarduino.a(wiring.o) - 0x0000000000002754 millis - .text.micros 0x000000000000276c 0x4a ../lib/libarduino.a(wiring.o) - 0x000000000000276c micros - .text.delay 0x00000000000027b6 0x4c ../lib/libarduino.a(wiring.o) - 0x00000000000027b6 delay - .text.init 0x0000000000002802 0x76 ../lib/libarduino.a(wiring.o) - 0x0000000000002802 init + 0x0000000000002916 0x94 ../lib/libarduino.a(wiring.o) + 0x0000000000002916 __vector_16 + .text.millis 0x00000000000029aa 0x18 ../lib/libarduino.a(wiring.o) + 0x00000000000029aa millis + .text.micros 0x00000000000029c2 0x4a ../lib/libarduino.a(wiring.o) + 0x00000000000029c2 micros + .text.delay 0x0000000000002a0c 0x4c ../lib/libarduino.a(wiring.o) + 0x0000000000002a0c delay + .text.init 0x0000000000002a58 0x76 ../lib/libarduino.a(wiring.o) + 0x0000000000002a58 init .text.analogRead - 0x0000000000002878 0x3a ../lib/libarduino.a(wiring_analog.o) - 0x0000000000002878 analogRead + 0x0000000000002ace 0x3a ../lib/libarduino.a(wiring_analog.o) + 0x0000000000002ace analogRead .text.analogWrite - 0x00000000000028b2 0xbe ../lib/libarduino.a(wiring_analog.o) - 0x00000000000028b2 analogWrite + 0x0000000000002b08 0xbe ../lib/libarduino.a(wiring_analog.o) + 0x0000000000002b08 analogWrite .text.turnOffPWM - 0x0000000000002970 0x52 ../lib/libarduino.a(wiring_digital.o) - .text.pinMode 0x00000000000029c2 0x78 ../lib/libarduino.a(wiring_digital.o) - 0x00000000000029c2 pinMode + 0x0000000000002bc6 0x52 ../lib/libarduino.a(wiring_digital.o) + .text.pinMode 0x0000000000002c18 0x78 ../lib/libarduino.a(wiring_digital.o) + 0x0000000000002c18 pinMode .text.digitalWrite - 0x0000000000002a3a 0x5e ../lib/libarduino.a(wiring_digital.o) - 0x0000000000002a3a digitalWrite + 0x0000000000002c90 0x5e ../lib/libarduino.a(wiring_digital.o) + 0x0000000000002c90 digitalWrite .text.digitalRead - 0x0000000000002a98 0x52 ../lib/libarduino.a(wiring_digital.o) - 0x0000000000002a98 digitalRead + 0x0000000000002cee 0x52 ../lib/libarduino.a(wiring_digital.o) + 0x0000000000002cee digitalRead .text._ZN5Print5writeEPKhj - 0x0000000000002aea 0x50 ../lib/libarduino.a(Print.o) - 0x0000000000002aea _ZN5Print5writeEPKhj + 0x0000000000002d40 0x50 ../lib/libarduino.a(Print.o) + 0x0000000000002d40 _ZN5Print5writeEPKhj .text._ZN5Print5writeEPKc - 0x0000000000002b3a 0x2a ../lib/libarduino.a(Print.o) - 0x0000000000002b3a _ZN5Print5writeEPKc + 0x0000000000002d90 0x2a ../lib/libarduino.a(Print.o) + 0x0000000000002d90 _ZN5Print5writeEPKc .text._ZN5Print5printEPK19__FlashStringHelper - 0x0000000000002b64 0x46 ../lib/libarduino.a(Print.o) - 0x0000000000002b64 _ZN5Print5printEPK19__FlashStringHelper + 0x0000000000002dba 0x46 ../lib/libarduino.a(Print.o) + 0x0000000000002dba _ZN5Print5printEPK19__FlashStringHelper .text._ZN5Print5printEc - 0x0000000000002baa 0xe ../lib/libarduino.a(Print.o) - 0x0000000000002baa _ZN5Print5printEc + 0x0000000000002e00 0xe ../lib/libarduino.a(Print.o) + 0x0000000000002e00 _ZN5Print5printEc .text._ZN5Print7printlnEv - 0x0000000000002bb8 0x28 ../lib/libarduino.a(Print.o) - 0x0000000000002bb8 _ZN5Print7printlnEv + 0x0000000000002e0e 0x28 ../lib/libarduino.a(Print.o) + 0x0000000000002e0e _ZN5Print7printlnEv .text._ZN5Print7printlnEPK19__FlashStringHelper - 0x0000000000002be0 0x24 ../lib/libarduino.a(Print.o) - 0x0000000000002be0 _ZN5Print7printlnEPK19__FlashStringHelper + 0x0000000000002e36 0x24 ../lib/libarduino.a(Print.o) + 0x0000000000002e36 _ZN5Print7printlnEPK19__FlashStringHelper .text._ZN5Print11printNumberEmh - 0x0000000000002c04 0xac ../lib/libarduino.a(Print.o) - 0x0000000000002c04 _ZN5Print11printNumberEmh + 0x0000000000002e5a 0xac ../lib/libarduino.a(Print.o) + 0x0000000000002e5a _ZN5Print11printNumberEmh .text._ZN5Print5printEmi - 0x0000000000002cb0 0x1a ../lib/libarduino.a(Print.o) - 0x0000000000002cb0 _ZN5Print5printEmi + 0x0000000000002f06 0x1a ../lib/libarduino.a(Print.o) + 0x0000000000002f06 _ZN5Print5printEmi .text._ZN5Print5printEji - 0x0000000000002cca 0xc ../lib/libarduino.a(Print.o) - 0x0000000000002cca _ZN5Print5printEji + 0x0000000000002f20 0xc ../lib/libarduino.a(Print.o) + 0x0000000000002f20 _ZN5Print5printEji .text._ZN5Print5printEli - 0x0000000000002cd6 0x90 ../lib/libarduino.a(Print.o) - 0x0000000000002cd6 _ZN5Print5printEli + 0x0000000000002f2c 0x90 ../lib/libarduino.a(Print.o) + 0x0000000000002f2c _ZN5Print5printEli .text._ZN5Print5printEii - 0x0000000000002d66 0xe ../lib/libarduino.a(Print.o) - 0x0000000000002d66 _ZN5Print5printEii + 0x0000000000002fbc 0xe ../lib/libarduino.a(Print.o) + 0x0000000000002fbc _ZN5Print5printEii .text._Z3maplllll - 0x0000000000002d74 0x82 ../lib/libarduino.a(WMath.o) - 0x0000000000002d74 _Z3maplllll + 0x0000000000002fca 0x82 ../lib/libarduino.a(WMath.o) + 0x0000000000002fca _Z3maplllll .text.__cxa_pure_virtual - 0x0000000000002df6 0x2 ../lib/libarduino.a(forward.o) - 0x0000000000002df6 __cxa_pure_virtual + 0x000000000000304c 0x2 ../lib/libarduino.a(forward.o) + 0x000000000000304c __cxa_pure_virtual .text._ZN8SPIClass5beginEv - 0x0000000000002df8 0x2c ../lib/libarduino.a(SPI.o) - 0x0000000000002df8 _ZN8SPIClass5beginEv + 0x000000000000304e 0x2c ../lib/libarduino.a(SPI.o) + 0x000000000000304e _ZN8SPIClass5beginEv .text._ZN8SPIClass11setBitOrderEh - 0x0000000000002e24 0x12 ../lib/libarduino.a(SPI.o) - 0x0000000000002e24 _ZN8SPIClass11setBitOrderEh + 0x000000000000307a 0x12 ../lib/libarduino.a(SPI.o) + 0x000000000000307a _ZN8SPIClass11setBitOrderEh .text._ZN8SPIClass11setDataModeEh - 0x0000000000002e36 0xa ../lib/libarduino.a(SPI.o) - 0x0000000000002e36 _ZN8SPIClass11setDataModeEh + 0x000000000000308c 0xa ../lib/libarduino.a(SPI.o) + 0x000000000000308c _ZN8SPIClass11setDataModeEh .text._ZN8SPIClass15setClockDividerEh - 0x0000000000002e40 0x1e ../lib/libarduino.a(SPI.o) - 0x0000000000002e40 _ZN8SPIClass15setClockDividerEh + 0x0000000000003096 0x1e ../lib/libarduino.a(SPI.o) + 0x0000000000003096 _ZN8SPIClass15setClockDividerEh .text.libgcc.mul - 0x0000000000002e5e 0x20 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_mulsi3.o) - 0x0000000000002e5e __mulsi3 + 0x00000000000030b4 0x20 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_mulsi3.o) + 0x00000000000030b4 __mulsi3 .text.libgcc.div - 0x0000000000002e7e 0x18 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_udivmodqi4.o) - 0x0000000000002e7e __udivmodqi4 + 0x00000000000030d4 0x18 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_udivmodqi4.o) + 0x00000000000030d4 __udivmodqi4 .text.libgcc.div - 0x0000000000002e96 0x28 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_udivmodhi4.o) - 0x0000000000002e96 __udivmodhi4 + 0x00000000000030ec 0x28 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_udivmodhi4.o) + 0x00000000000030ec __udivmodhi4 .text.libgcc.div - 0x0000000000002ebe 0x28 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_divmodhi4.o) - 0x0000000000002ebe __divmodhi4 - 0x0000000000002ebe _div + 0x0000000000003114 0x28 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_divmodhi4.o) + 0x0000000000003114 __divmodhi4 + 0x0000000000003114 _div .text.libgcc.div - 0x0000000000002ee6 0x44 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_udivmodsi4.o) - 0x0000000000002ee6 __udivmodsi4 + 0x000000000000313c 0x44 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_udivmodsi4.o) + 0x000000000000313c __udivmodsi4 .text.libgcc.div - 0x0000000000002f2a 0x2e /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_divmodsi4.o) - 0x0000000000002f2a __divmodsi4 + 0x0000000000003180 0x2e /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_divmodsi4.o) + 0x0000000000003180 __divmodsi4 .text.libgcc.div - 0x0000000000002f58 0x10 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_negsi2.o) - 0x0000000000002f58 __negsi2 + 0x00000000000031ae 0x10 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_negsi2.o) + 0x00000000000031ae __negsi2 .text.libgcc.mul - 0x0000000000002f68 0x16 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muluhisi3.o) - 0x0000000000002f68 __muluhisi3 - .text.libgcc 0x0000000000002f7e 0xc /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_tablejump2.o) - 0x0000000000002f7e __tablejump2__ + 0x00000000000031be 0x16 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muluhisi3.o) + 0x00000000000031be __muluhisi3 + .text.libgcc 0x00000000000031d4 0xc /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_tablejump2.o) + 0x00000000000031d4 __tablejump2__ .text.libgcc.mul - 0x0000000000002f8a 0x1e /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_umulhisi3.o) - 0x0000000000002f8a __umulhisi3 + 0x00000000000031e0 0x1e /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_umulhisi3.o) + 0x00000000000031e0 __umulhisi3 .text.avr-libc.fplib - 0x0000000000002fa8 0x5e /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libm.a(fixunssfsi.o) - 0x0000000000002fa8 __fixunssfsi + 0x00000000000031fe 0x5e /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libm.a(fixunssfsi.o) + 0x00000000000031fe __fixunssfsi .text.avr-libc.fplib - 0x0000000000003006 0x7a /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libm.a(floatsisf.o) - 0x0000000000003006 __floatunsisf - 0x000000000000300a __floatsisf + 0x000000000000325c 0x7a /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libm.a(floatsisf.o) + 0x000000000000325c __floatunsisf + 0x0000000000003260 __floatsisf .text.avr-libc.fplib - 0x0000000000003080 0xc /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libm.a(fp_inf.o) - 0x0000000000003080 __fp_inf + 0x00000000000032d6 0xc /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libm.a(fp_inf.o) + 0x00000000000032d6 __fp_inf .text.avr-libc.fplib - 0x000000000000308c 0x6 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libm.a(fp_nan.o) - 0x000000000000308c __fp_nan + 0x00000000000032e2 0x6 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libm.a(fp_nan.o) + 0x00000000000032e2 __fp_nan .text.avr-libc.fplib - 0x0000000000003092 0xe /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libm.a(fp_pscA.o) - 0x0000000000003092 __fp_pscA + 0x00000000000032e8 0xe /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libm.a(fp_pscA.o) + 0x00000000000032e8 __fp_pscA .text.avr-libc.fplib - 0x00000000000030a0 0xe /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libm.a(fp_pscB.o) - 0x00000000000030a0 __fp_pscB + 0x00000000000032f6 0xe /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libm.a(fp_pscB.o) + 0x00000000000032f6 __fp_pscB .text.avr-libc.fplib - 0x00000000000030ae 0x22 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libm.a(fp_round.o) - 0x00000000000030ae __fp_round + 0x0000000000003304 0x22 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libm.a(fp_round.o) + 0x0000000000003304 __fp_round .text.avr-libc.fplib - 0x00000000000030d0 0x44 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libm.a(fp_split3.o) - 0x00000000000030d0 __fp_split3 - 0x00000000000030e0 __fp_splitA + 0x0000000000003326 0x44 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libm.a(fp_split3.o) + 0x0000000000003326 __fp_split3 + 0x0000000000003336 __fp_splitA .text.avr-libc.fplib - 0x0000000000003114 0xe /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libm.a(fp_zero.o) - 0x0000000000003114 __fp_zero - 0x0000000000003116 __fp_szero + 0x000000000000336a 0xe /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libm.a(fp_zero.o) + 0x000000000000336a __fp_zero + 0x000000000000336c __fp_szero .text.avr-libc.fplib - 0x0000000000003122 0x8 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libm.a(mulsf3.o) - 0x0000000000003122 __mulsf3 + 0x0000000000003378 0x8 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libm.a(mulsf3.o) + 0x0000000000003378 __mulsf3 .text.avr-libc.fplib - 0x000000000000312a 0xd2 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libm.a(mulsf3x.o) - 0x0000000000003148 __mulsf3x - 0x000000000000314e __mulsf3_pse + 0x0000000000003380 0xd2 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libm.a(mulsf3x.o) + 0x000000000000339e __mulsf3x + 0x00000000000033a4 __mulsf3_pse .text.avr-libc - 0x00000000000031fc 0xe /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(memset.o) - 0x00000000000031fc memset + 0x0000000000003452 0xe /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(memset.o) + 0x0000000000003452 memset .text.avr-libc - 0x000000000000320a 0x1e /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(strncpy.o) - 0x000000000000320a strncpy - 0x0000000000003228 . = ALIGN (0x2) + 0x0000000000003460 0x1e /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(strncpy.o) + 0x0000000000003460 strncpy + 0x000000000000347e . = ALIGN (0x2) *(.fini9) - .fini9 0x0000000000003228 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_exit.o) - 0x0000000000003228 exit - 0x0000000000003228 _exit + .fini9 0x000000000000347e 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_exit.o) + 0x000000000000347e exit + 0x000000000000347e _exit *(.fini9) *(.fini8) *(.fini8) @@ -1737,11 +1756,11 @@ END GROUP *(.fini1) *(.fini1) *(.fini0) - .fini0 0x0000000000003228 0x4 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_exit.o) + .fini0 0x000000000000347e 0x4 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_exit.o) *(.fini0) - 0x000000000000322c _etext = . + 0x0000000000003482 _etext = . -.data 0x0000000000800100 0x66 load address 0x000000000000322c +.data 0x0000000000800100 0x58 load address 0x0000000000003482 0x0000000000800100 PROVIDE (__data_start, .) *(.data) *(.data*) @@ -1751,78 +1770,76 @@ END GROUP 0x0000000000800101 0x1 ../lib/libarduino.a(wiring_analog.o) 0x0000000000800101 analog_reference *(.rodata) + .rodata 0x0000000000800102 0x3 Obj/Unit.o *(.rodata*) .rodata._ZZN11HumanPlayer13buttonHandlerEvE23apBtnCameraHandlerTable - 0x0000000000800102 0x1c Obj/HumanPlayer.o + 0x0000000000800105 0x1c Obj/HumanPlayer.o .rodata._ZZN11HumanPlayer13buttonHandlerEvE17apBtnHandlerTable - 0x000000000080011e 0x1c Obj/HumanPlayer.o + 0x0000000000800121 0x1c Obj/HumanPlayer.o .rodata._ZTV11HumanPlayer - 0x000000000080013a 0x6 Obj/HumanPlayer.o - 0x000000000080013a _ZTV11HumanPlayer + 0x000000000080013d 0x6 Obj/HumanPlayer.o + 0x000000000080013d _ZTV11HumanPlayer .rodata._ZTV6Player - 0x0000000000800140 0x6 Obj/Player.o - 0x0000000000800140 _ZTV6Player - .rodata._ZZN4Unit11drawHandlerEvE17au8PeasantSprData - 0x0000000000800146 0xa Obj/Unit.o - .rodata._ZZN4Unit11drawHandlerEvE23apu8UnitSpriteDataTable - 0x0000000000800150 0x6 Obj/Unit.o + 0x0000000000800143 0x6 Obj/Player.o + 0x0000000000800143 _ZTV6Player .rodata._ZTV7Display - 0x0000000000800156 0x8 ../lib/libgamebuino.a(Display.o) - 0x0000000000800156 _ZTV7Display + 0x0000000000800149 0x8 ../lib/libgamebuino.a(Display.o) + 0x0000000000800149 _ZTV7Display .rodata.str1.1 - 0x000000000080015e 0x7 ../lib/libgamebuino.a(Gamebuino.o) + 0x0000000000800151 0x7 ../lib/libgamebuino.a(Gamebuino.o) *(.gnu.linkonce.d*) - 0x0000000000800166 . = ALIGN (0x2) - *fill* 0x0000000000800165 0x1 - 0x0000000000800166 _edata = . - 0x0000000000800166 PROVIDE (__data_end, .) + 0x0000000000800158 . = ALIGN (0x2) + 0x0000000000800158 _edata = . + 0x0000000000800158 PROVIDE (__data_end, .) -.bss 0x0000000000800166 0x296 - 0x0000000000800166 PROVIDE (__bss_start, .) +.bss 0x0000000000800158 0x298 + 0x0000000000800158 PROVIDE (__bss_start, .) *(.bss) *(.bss*) - .bss.gb 0x0000000000800166 0x87 Obj/System.o - 0x0000000000800166 gb + .bss.gb 0x0000000000800158 0x87 Obj/System.o + 0x0000000000800158 gb + .bss._cam 0x00000000008001df 0x2 Obj/Sprite.o + 0x00000000008001df _cam .bss._displayBuffer - 0x00000000008001ed 0x200 ../lib/libgamebuino.a(Display.o) - 0x00000000008001ed _displayBuffer + 0x00000000008001e1 0x200 ../lib/libgamebuino.a(Display.o) + 0x00000000008001e1 _displayBuffer .bss._chanNoise - 0x00000000008003ed 0x1 ../lib/libgamebuino.a(Sound.o) - 0x00000000008003ed _chanNoise + 0x00000000008003e1 0x1 ../lib/libgamebuino.a(Sound.o) + 0x00000000008003e1 _chanNoise .bss._chanOutput - 0x00000000008003ee 0x1 ../lib/libgamebuino.a(Sound.o) - 0x00000000008003ee _chanOutput + 0x00000000008003e2 0x1 ../lib/libgamebuino.a(Sound.o) + 0x00000000008003e2 _chanOutput .bss._chanOutputVolume - 0x00000000008003ef 0x1 ../lib/libgamebuino.a(Sound.o) - 0x00000000008003ef _chanOutputVolume + 0x00000000008003e3 0x1 ../lib/libgamebuino.a(Sound.o) + 0x00000000008003e3 _chanOutputVolume .bss._chanHalfPeriod - 0x00000000008003f0 0x1 ../lib/libgamebuino.a(Sound.o) - 0x00000000008003f0 _chanHalfPeriod + 0x00000000008003e4 0x1 ../lib/libgamebuino.a(Sound.o) + 0x00000000008003e4 _chanHalfPeriod .bss._chanState - 0x00000000008003f1 0x1 ../lib/libgamebuino.a(Sound.o) - 0x00000000008003f1 _chanState + 0x00000000008003e5 0x1 ../lib/libgamebuino.a(Sound.o) + 0x00000000008003e5 _chanState .bss._chanCount - 0x00000000008003f2 0x1 ../lib/libgamebuino.a(Sound.o) - 0x00000000008003f2 _chanCount + 0x00000000008003e6 0x1 ../lib/libgamebuino.a(Sound.o) + 0x00000000008003e6 _chanCount .bss.timer0_fract - 0x00000000008003f3 0x1 ../lib/libarduino.a(wiring.o) + 0x00000000008003e7 0x1 ../lib/libarduino.a(wiring.o) .bss.timer0_millis - 0x00000000008003f4 0x4 ../lib/libarduino.a(wiring.o) - 0x00000000008003f4 timer0_millis + 0x00000000008003e8 0x4 ../lib/libarduino.a(wiring.o) + 0x00000000008003e8 timer0_millis .bss.timer0_overflow_count - 0x00000000008003f8 0x4 ../lib/libarduino.a(wiring.o) - 0x00000000008003f8 timer0_overflow_count + 0x00000000008003ec 0x4 ../lib/libarduino.a(wiring.o) + 0x00000000008003ec timer0_overflow_count *(COMMON) - 0x00000000008003fc PROVIDE (__bss_end, .) - 0x000000000000322c __data_load_start = LOADADDR (.data) - 0x0000000000003292 __data_load_end = (__data_load_start + SIZEOF (.data)) + 0x00000000008003f0 PROVIDE (__bss_end, .) + 0x0000000000003482 __data_load_start = LOADADDR (.data) + 0x00000000000034da __data_load_end = (__data_load_start + SIZEOF (.data)) -.noinit 0x00000000008003fc 0x0 +.noinit 0x00000000008003f0 0x0 [!provide] PROVIDE (__noinit_start, .) *(.noinit*) [!provide] PROVIDE (__noinit_end, .) - 0x00000000008003fc _end = . - 0x00000000008003fc PROVIDE (__heap_start, .) + 0x00000000008003f0 _end = . + 0x00000000008003f0 PROVIDE (__heap_start, .) .eeprom 0x0000000000810000 0x0 *(.eeprom*) diff --git a/Game.cpp b/Game.cpp index 1338e9b..e4c0438 100644 --- a/Game.cpp +++ b/Game.cpp @@ -60,15 +60,6 @@ static enum tPauseMenuChoice GamePause(void); *********************************************************************/ void Game(const struct tGameConfig& sGameConfig) { -#if 0 - Sprite MouseSpr( MouseSprData, - INVERT, - NOROT, - NOFLIP, - (X_SCREEN_RESOLUTION >> 1) - 4, - (Y_SCREEN_RESOLUTION >> 1) - 4); -#endif /* 0 */ - do { /* Calculate next frame. */ @@ -100,6 +91,10 @@ static void GameNextFrame(const struct tGameConfig& sGameConfig) pHumanPlayerData->handler(); } } + + /* Update camera position according + * to button pressed events. */ + sGameConfig.cam.handler(); } /*****************************************************************//** diff --git a/Game.h b/Game.h index 2f9760e..265158d 100644 --- a/Game.h +++ b/Game.h @@ -20,6 +20,7 @@ struct tGameConfig { HumanPlayer* pHumanPlayerData; uint8_t u8NHumanPlayers; + Camera& cam; }; /* ******************************************************************* diff --git a/HumanPlayer.cpp b/HumanPlayer.cpp index ae16f97..e83d4e6 100644 --- a/HumanPlayer.cpp +++ b/HumanPlayer.cpp @@ -36,10 +36,11 @@ * \brief Constructor for HumanPlayer class. * *********************************************************************/ -HumanPlayer::HumanPlayer(const char* const strPlayerName) : -Player(strPlayerName) +HumanPlayer::HumanPlayer(const char* const strPlayerName, const Camera& cam) : +Player(strPlayerName), +_cam(cam) { - _unitsMap[0].create(Unit::UNIT_ID_PEASANT); + _unitsMap[0].create(Unit::UNIT_ID_PEASANT, 16, 16); } /*****************************************************************//** @@ -84,12 +85,12 @@ void HumanPlayer::buttonHandler(void) static void (Camera::*const apBtnCameraHandlerTable[NUM_BTN])(void) = { [BTN_LEFT] = &Camera::onLeftBtnPressed, - [BTN_UP] = NULL, + [BTN_UP] = &Camera::onUpBtnPressed, [BTN_RIGHT] = &Camera::onRightBtnPressed, - [BTN_DOWN] = NULL + [BTN_DOWN] = &Camera::onDownBtnPressed }; - if (gb.buttons.pressed(u8Btn)) + if (gb.buttons.timeHeld(u8Btn) > 0) { /* Key has been pressed. Execute both * HumanPlayer and Camera handlers, if available. */ @@ -113,9 +114,12 @@ void HumanPlayer::buttonHandler(void) if (pCameraBtnHandler != NULL) { - /* Camera member function - * pointer is available. Execute. */ - (_cam.*pCameraBtnHandler)(); + /* Camera member function pointer + * is available. + * Note: "const" qualifier must be + * removed since camera button event + * handler modifies Camera class members. */ + ((Camera&)_cam.*pCameraBtnHandler)(); } else { diff --git a/HumanPlayer.h b/HumanPlayer.h index 5f213c4..8a6e598 100644 --- a/HumanPlayer.h +++ b/HumanPlayer.h @@ -23,11 +23,11 @@ class HumanPlayer : public Player { public: - explicit HumanPlayer(const char* const strPlayerName); + explicit HumanPlayer(const char* const strPlayerName, const Camera& cam); void handler(void); private: - Camera _cam; + const Camera& _cam; void buttonHandler(void); void drawHandler(void); diff --git a/Menu.cpp b/Menu.cpp index 9b19069..25c40aa 100644 --- a/Menu.cpp +++ b/Menu.cpp @@ -6,6 +6,7 @@ #include "HumanPlayer.h" #include "Game.h" #include "System.h" +#include "Sprite.h" #include #include @@ -83,20 +84,26 @@ void MainMenu(void) GAMEBUINO_MAX_PLAYER_NAME = 10 }; + Camera cam; + char strName[GAMEBUINO_MAX_PLAYER_NAME] = {0}; /* Fill strName with default user name. */ gb.getDefaultName(strName); /* Declare 1 human player instance. */ - HumanPlayer h(strName); + HumanPlayer h(strName, cam); const struct tGameConfig c = { .pHumanPlayerData = &h, - .u8NHumanPlayers = 1 + .u8NHumanPlayers = 1, + .cam = cam }; + /* Set global camera for sprites. */ + Sprite::setCamera(&c.cam); + /* Initialize game with defined configuration. */ Game(c); } diff --git a/PocketEmpires.geany b/PocketEmpires.geany index 082a8eb..a777ba3 100644 --- a/PocketEmpires.geany +++ b/PocketEmpires.geany @@ -28,28 +28,28 @@ long_line_behaviour=1 long_line_column=120 [files] -current_page=30 +current_page=13 FILE_NAME_0=0;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FPocketEmpires%2Fsrc%2FGfx.cpp;0;4 FILE_NAME_1=0;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FPocketEmpires%2Fsrc%2Fmain.cpp;0;4 -FILE_NAME_2=3361;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FPocketEmpires%2Fsrc%2FMenu.cpp;0;4 +FILE_NAME_2=3160;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FPocketEmpires%2Fsrc%2FMenu.cpp;0;4 FILE_NAME_3=317;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FPocketEmpires%2Fsrc%2FPad.cpp;0;4 -FILE_NAME_4=772;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FPocketEmpires%2Fsrc%2FCamera.h;0;4 +FILE_NAME_4=663;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FPocketEmpires%2Fsrc%2FCamera.h;0;4 FILE_NAME_5=665;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FPocketEmpires%2Fsrc%2FGfx.h;0;4 FILE_NAME_6=314;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FPocketEmpires%2Fsrc%2FGlobal_Inc.h;0;4 FILE_NAME_7=299;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FPocketEmpires%2Fsrc%2FMenu.h;0;4 FILE_NAME_8=611;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FPocketEmpires%2Fsrc%2FPad.h;0;4 -FILE_NAME_9=728;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FPocketEmpires%2Fsrc%2FPlayer.h;0;4 -FILE_NAME_10=543;Make;0;EUTF-8;1;1;0;%2Fhome%2Fxavier%2FPocketEmpires%2Fsrc%2FMakefile;0;4 -FILE_NAME_11=0;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FPocketEmpires%2Fsrc%2FSystem.cpp;0;4 -FILE_NAME_12=875;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FPocketEmpires%2Fsrc%2FHumanPlayer.h;0;4 -FILE_NAME_13=4115;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FPocketEmpires%2Fsrc%2FHumanPlayer.cpp;0;4 -FILE_NAME_14=1662;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FPocketEmpires%2Fsrc%2FPlayer.cpp;0;4 -FILE_NAME_15=3287;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FPocketEmpires%2Fsrc%2FGame.cpp;0;4 -FILE_NAME_16=1226;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FPocketEmpires%2Fsrc%2FGame.h;0;4 -FILE_NAME_17=1965;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FPocketEmpires%2Fsrc%2FCamera.cpp;0;4 +FILE_NAME_9=1191;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FPocketEmpires%2Fsrc%2FPlayer.h;0;4 +FILE_NAME_10=412;Make;0;EUTF-8;1;1;0;%2Fhome%2Fxavier%2FPocketEmpires%2Fsrc%2FMakefile;0;4 +FILE_NAME_11=2168;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FPocketEmpires%2Fsrc%2FSystem.cpp;0;4 +FILE_NAME_12=731;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FPocketEmpires%2Fsrc%2FHumanPlayer.h;0;4 +FILE_NAME_13=4068;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FPocketEmpires%2Fsrc%2FHumanPlayer.cpp;0;4 +FILE_NAME_14=1460;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FPocketEmpires%2Fsrc%2FPlayer.cpp;0;4 +FILE_NAME_15=2083;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FPocketEmpires%2Fsrc%2FGame.cpp;0;4 +FILE_NAME_16=571;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FPocketEmpires%2Fsrc%2FGame.h;0;4 +FILE_NAME_17=2241;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FPocketEmpires%2Fsrc%2FCamera.cpp;0;4 FILE_NAME_18=1377;C;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FPocketEmpires%2Fsrc%2FCameraOld.c;0;4 -FILE_NAME_19=586;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FPocketEmpires%2Fsrc%2FSprite.h;0;4 -FILE_NAME_20=0;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FPocketEmpires%2Fsrc%2FSprite.cpp;0;4 +FILE_NAME_19=768;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FPocketEmpires%2Fsrc%2FSprite.h;0;4 +FILE_NAME_20=2844;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FPocketEmpires%2Fsrc%2FSprite.cpp;0;4 FILE_NAME_21=818;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FPocketEmpires%2Fsrc%2FSystem.h;0;4 FILE_NAME_22=5650;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FPocketEmpires%2Fsrc%2FLibs%2Flibgamebuino%2FDisplay.h;0;4 FILE_NAME_23=14993;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FPocketEmpires%2Fsrc%2FLibs%2Flibgamebuino%2FGamebuino.cpp;0;4 @@ -57,9 +57,17 @@ FILE_NAME_24=0;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FPocketEmpires%2Fsrc%2FLibs% FILE_NAME_25=833;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FPocketEmpires%2Fsrc%2FLibs%2Flibgamebuino%2FButtons.cpp;0;4 FILE_NAME_26=0;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FPocketEmpires%2Fsrc%2FLibs%2Flibgamebuino%2FButtons.h;0;4 FILE_NAME_27=3441;C;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FPocketEmpires%2Fsrc%2FLibs%2Flibgamebuino%2Fsettings.c;0;4 -FILE_NAME_28=22712;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FPocketEmpires%2Fsrc%2FLibs%2Flibgamebuino%2FDisplay.cpp;0;4 -FILE_NAME_29=1190;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FPocketEmpires%2Fsrc%2FBaseUnit.cpp;0;4 -FILE_NAME_30=1233;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FPocketEmpires%2Fsrc%2FBaseUnit.h;0;4 +FILE_NAME_28=19868;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FPocketEmpires%2Fsrc%2FLibs%2Flibgamebuino%2FDisplay.cpp;0;4 +FILE_NAME_29=1853;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FPocketEmpires%2Fsrc%2FBaseUnit.cpp;0;4 +FILE_NAME_30=1182;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FPocketEmpires%2Fsrc%2FBaseUnit.h;0;4 +FILE_NAME_31=1373;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FPocketEmpires%2Fsrc%2FUnit.h;0;4 +FILE_NAME_32=2363;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FPocketEmpires%2Fsrc%2FUnit.cpp;0;4 +FILE_NAME_33=0;None;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FPocketEmpires%2Fsrc%2FBarracksSpr.i;0;4 +FILE_NAME_34=937;None;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FPocketEmpires%2Fsrc%2FMouseSpr.i;0;4 +FILE_NAME_35=225;None;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FPocketEmpires%2Fsrc%2FPeasantSpr.i;0;4 +FILE_NAME_36=0;None;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FPocketEmpires%2Fsrc%2FSoldierSpr.i;0;4 +FILE_NAME_37=0;None;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FPocketEmpires%2Fsrc%2FTowerSpr.i;0;4 +FILE_NAME_38=0;None;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FPocketEmpires%2Fsrc%2FTownCentre.i;0;4 [VTE] last_dir=/home/xavier/PocketEmpires/src diff --git a/Sprite.cpp b/Sprite.cpp index d948652..131a4f1 100644 --- a/Sprite.cpp +++ b/Sprite.cpp @@ -17,6 +17,8 @@ * Global variables definition * ******************************************************************/ +const Camera* _cam; + /* ******************************************************************* * Local variables definition * ******************************************************************/ @@ -36,6 +38,9 @@ * \param pu8SprData * Pointer to raw sprite data. * + * \param _followCam + * Sprite is moved by camera. Default value is true. + * * \param u8Colour * Sprite colour. Default value is BLACK. * @@ -43,8 +48,9 @@ * Sprite rotation. Default value is NOROT. * *********************************************************************/ -Sprite::Sprite(const uint8_t& pu8SprData, const uint8_t u8Colour, const uint8_t rotation) : +Sprite::Sprite(const uint8_t* pu8SprData, const bool followCam, const uint8_t u8Colour, const uint8_t rotation) : _pu8SprData(pu8SprData), +_followCam(followCam), _colour(u8Colour), _rotation(rotation), _x(0), @@ -73,6 +79,17 @@ void Sprite::setPos(const uint8_t x, const uint8_t y) void Sprite::draw(void) { - gb.display.setColor(_colour); - gb.display.drawBitmap(_x, _y, (const uint8_t*)&_pu8SprData); + gb.display.setColor(_colour, WHITE); + + if (_cam != NULL) + { + const uint8_t x = _followCam ? _cam->getX(_x) : _x; + const uint8_t y = _followCam ? _cam->getY(_y) : _y; + + gb.display.drawBitmap(x, y, _pu8SprData); + } + else + { + /* Error: uninitialized camera. */ + } } diff --git a/Sprite.h b/Sprite.h index c365735..afe9db1 100644 --- a/Sprite.h +++ b/Sprite.h @@ -1,34 +1,53 @@ #ifndef SPRITE_H__ #define SPRITE_H__ -/* ************************************* +/* ******************************************************************* * Includes - * *************************************/ + * ******************************************************************/ +#include "Camera.h" #include #include -/* ************************************* +/* ******************************************************************* * Defines - * *************************************/ + * ******************************************************************/ -/* ************************************* - * Structs and enums - * *************************************/ +/* ******************************************************************* + * Global types definition + * ******************************************************************/ -/* ************************************* +/* ******************************************************************* + * Global variables declaration + * ******************************************************************/ + +extern const Camera* _cam; + +/* ******************************************************************* + * Global functions declaration + * ******************************************************************/ + +/* ******************************************************************* * Class definition - * *************************************/ + * ******************************************************************/ class Sprite { public: - Sprite(const uint8_t& pu8SprData, const uint8_t u8Colour = BLACK, const uint8_t rotation = NOFLIP); + Sprite( const uint8_t* pu8SprData, + const bool followCam = true, + const uint8_t u8Colour = BLACK, + const uint8_t rotation = NOFLIP); void setPos(const uint8_t x, const uint8_t y); void draw(void); + static void setCamera(const Camera* const cam) + { + _cam = cam; + }; private: - const uint8_t& _pu8SprData; + const uint8_t* _pu8SprData; + const bool _followCam; uint8_t _colour; uint8_t _rotation; uint8_t _x; diff --git a/Unit.cpp b/Unit.cpp index 38535e7..a8a5988 100644 --- a/Unit.cpp +++ b/Unit.cpp @@ -25,6 +25,25 @@ * Local variables definition * ******************************************************************/ +/*****************************************************************//** + * + * \brief Bitmap data for idle UNIT_ID_PEASANT. + * + *********************************************************************/ +static const PROGMEM uint8_t au8PeasantSprData[] = +{ + 8, + 8, + 0x00, + 0x3C, + 0x42, + 0x99, + 0xA5, + 0x66, + 0x18, + 0x00 +}; + /* ******************************************************************* * Local prototypes declaration * ******************************************************************/ @@ -44,9 +63,31 @@ _eUnitID(eUnitID) { } -void Unit::create(const enum Unit::tUnitID eUnitID) +/*****************************************************************//** + * + * \brief Creates a Unit instance by setting default parameters + * and X/Y coordinates. + * + *********************************************************************/ +void Unit::create(const enum Unit::tUnitID eUnitID, const uint16_t x, const uint16_t y) { + /* Execute base class function first. */ + BaseUnit::create(x, y); + + /* Assign new ID to selected Unit. */ _eUnitID = eUnitID; + + /* This table relates all available + * unit IDs against a bitmap data table. */ + const uint8_t au8HpData[MAX_UNIT_ID] PROGMEM = + { + [UNIT_ID_NONE] = 0, + [UNIT_ID_PEASANT] = 25, + [UNIT_ID_SWORDMAN] = 35 + }; + + /* Assign health according to unit ID. */ + _hp = au8HpData[eUnitID]; } /*****************************************************************//** @@ -62,36 +103,31 @@ void Unit::handler(void) drawHandler(); } +/*****************************************************************//** + * + * \brief This function checks whether unit is inside screen + * boundaries and draws its associated bitmap. + * + *********************************************************************/ void Unit::drawHandler(void) { if (_eUnitID < MAX_UNIT_ID) { - static const uint8_t au8PeasantSprData[] = - { - 8, - 8, - 0x00, - 0x3C, - 0x42, - 0x99, - 0xA5, - 0x66, - 0x18, - 0x00 - }; - - static const uint8_t* const apu8UnitSpriteDataTable[MAX_UNIT_ID] = + /* This table relates all available + * unit IDs against a bitmap data table. */ + const uint8_t* const apu8UnitSpriteDataTable[MAX_UNIT_ID] PROGMEM = { [UNIT_ID_NONE] = NULL, [UNIT_ID_PEASANT] = au8PeasantSprData, [UNIT_ID_SWORDMAN] = NULL }; + /* Point to appropiate bitmap data given unit ID. */ const uint8_t* const pu8UnitSpriteData = apu8UnitSpriteDataTable[_eUnitID]; - Sprite spr(*pu8UnitSpriteData); + Sprite spr(pu8UnitSpriteData); - spr.setPos(16, 16); + spr.setPos(_x, _y); spr.draw(); } diff --git a/Unit.h b/Unit.h index 960154a..7a5f59f 100644 --- a/Unit.h +++ b/Unit.h @@ -42,7 +42,7 @@ class Unit : public BaseUnit }; explicit Unit(const Unit::tUnitID eUnitID = UNIT_ID_NONE); - void create(const enum Unit::tUnitID eUnitID); + void create(const enum Unit::tUnitID eUnitID, const uint16_t x, const uint16_t y); void handler(void); private: