Forum bépo

Forum des utilisateurs du bépo

Vous n'êtes pas identifié(e).

#301 10/7/2017 18:03:01

Flavien21
Admin
Lieu : Versailles
Inscription : 12/7/2015
Messages : 165
Site Web

Re : [sujet technique] Adapter le bépo à l’ergodox

Alors, j’ai écouté les conseils et ai symétrisé les deux touches contrôles ainsi que rapproché le K.
cdcergo0.7.png

J’ai également commencé à réfléchir à une version (qui prend encore plus compte les conseils) avec le W et le K tout à gauche, et du coup d’avoir une/deux touche(s) alphanumérique en plus, dont ma touche Tiret et une qui reste à définir, pour être symétrique au niveau des touches alphanumérique. J’ai rapproché ma touche copier/couper. Le seul truc que je n’ai pas pris en compte est de déplacer les flèches et le pavé numérique d’un cran à droite.
cdcergo0.7alt.png

J’ai essayé d’avoir un T inversé pour les flèches sur la couche de base mais c’est obligatoirement au détriment d’une lettre et du coup c’est assez dangereux.
Pour la touche INT3 (la touche ¥ des claviers JIS), pourquoi pas le tréma en accès direct, mais je l’ai mise en main gauche donc pas plus pratique que AltGr+I.

J’ai pas encore modifié le keymap.c depuis le dernier que j’ai posté.

Flavien,
Toujours en attente de son clavier.


bépoète depuis mars 2015

Hors ligne

#302 20/7/2017 08:45:54

Flavien21
Admin
Lieu : Versailles
Inscription : 12/7/2015
Messages : 165
Site Web

Re : [sujet technique] Adapter le bépo à l’ergodox

Ça y est je l’ai reçu et tout ne marche pas exactement comme prévu, les touches copier/coller ne fonctionnent pas avec les KC_COPY/KC_PASTE, j’ai dû passer par LCTL(BP_C)/LCTL(BP_V) mais adieux la compatibilité Mac.
Le taper pour copier et tenir pour couper ne fonctionne pas non plus, ça coupait à chaque fois.
J’ai un problème avec la diode Kana, elle ne se met à jour qu’après avoir appuyé sur Caps Lock ou Verr num.
Pareil pour le changement de couche ça me faisait clignoter les RGB donc pour l’instant je l’ai affecté à une diode normale, et ça fonctionne sans problème.
Le changement de couleur suivant si le pavé numérique est activé ou non fonctionne sans problème, mais beaucoup moins utile si je suis obligé d’allumer les diodes à la main.
Enfin voilà quelques trucs à revoir mais ça s’annonce bien.


bépoète depuis mars 2015

Hors ligne

#303 11/8/2017 15:38:09

Flavien21
Admin
Lieu : Versailles
Inscription : 12/7/2015
Messages : 165
Site Web

Re : [sujet technique] Adapter le bépo à l’ergodox

Bon voilà, à part pour les touches doubles fonctions copier/couper et le Roya/Ç tout fonctionne comme je le voulais.
J’ai dû jouer des tours pour faire fonctionner la diode Kana (en gros j’ai fait une macro qui appuis sur Kana puis 2×CapsLock), pour que les diodes arrêtent de clignoter j’ai dû passer par une variable et une fonction if else pour que le toggle ne s’active qu’une fois.

J’ai viré la touche power, on appuis trop facilement dessus sans faire exprès, j’ai mis le gestionnaire des tâches à la place, et du coup retrouvé tab sur ma deuxième couche, car en fait c’est utile.

J’ai pour l’instant un truc qui me convient (très proche de l’image du dessus), même si il faudrait revoir des petites choses.


bépoète depuis mars 2015

Hors ligne

#304 14/8/2017 00:55:39

Anyndel
Membres
Lieu : Lyon, Paris
Inscription : 10/8/2017
Messages : 4

Re : [sujet technique] Adapter le bépo à l’ergodox

Bonjour ! À mon tour d’intervenir ici, après tout, c’est le sujet que j’ai lu plusieurs fois et qui m’a décidé à acheter un Ergodox EZ !

Depuis que je le possède, j’ai changé plusieurs fois de configuration, notamment pour les touches non alphanumériques, et voici l’actuelle :

disposition Ergodox personnelle

Le code source C :

#include "ergodox.h"
#include "debug.h"
#include "action_layer.h"
#include "version.h"


#include "keymap_bepo.h"
#include "keymap_french.h"



enum custom_keycodes {
  PLACEHOLDER = SAFE_RANGE, // can always be here
  EPRM,
  VRSN,
  RGB_SLD,
  RGB_0000FF,
  RGB_008000,
  RGB_FFA500,
  RGB_800080,
  RGB_FF0000
};

const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {

  [0] = KEYMAP(
      KC_ESCAPE,      BP_DQOT,        BP_LGIL,        BP_RGIL,        BP_LPRN,        BP_RPRN,        BP_DOLLAR,
      BP_W,           BP_B,           BP_E_ACUTE,     BP_P,           BP_O,           BP_E_GRAVE,     KC_TAB,
      BP_CCED,        BP_A,           BP_U,           BP_I,           BP_E,           BP_COMMA,
      KC_LCTL,        BP_A_GRAVE,     BP_Y,           BP_X,           BP_DOT,         BP_K,           KC_ENTER,
      KC_KANA,        KC_APP,         KC_LALT,        KC_LGUI,        KC_RALT,
      KC_UP,          KC_DOWN,        TT(2),          KC_SPACE,       KC_LSHIFT,      TT(1),

      BP_PERCENT,     BP_AT,          BP_PLUS,        BP_MINUS,       BP_SLASH,       BP_ASTR,        BP_EQUAL,
      KC_DELETE,      BP_DCRC,        BP_V,           BP_D,           BP_L,           BP_J,           BP_Z,
                      BP_C,           BP_T,           BP_S,           BP_R,           BP_N,           BP_M,
      KC_BSPACE,      BP_APOS,        BP_Q,           BP_G,           BP_H,           BP_F,           KC_RCTRL,
      KC_RALT,        KC_RGUI,        KC_LALT,        KC_HENK,        KC_MHEN,
      KC_LEFT,        KC_RIGHT,       TT(2),          TT(1),          KC_RSHIFT,      KC_ENTER
      ),

  [1] = KEYMAP(
      KC_TRANSPARENT, KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,
      KC_FN13,        KC_FN12,        KC_HOME,        KC_UP,          KC_END,         KC_PGUP,        KC_TRANSPARENT,
      KC_FN11,        KC_FN10,        KC_LEFT,        KC_DOWN,        KC_RIGHT,       KC_PGDOWN,
      KC_TRANSPARENT, KC_FN5,         KC_FN6,         KC_FN7,         KC_FN8,         KC_FN9,         KC_TRANSPARENT,
      KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,
      KC_NO,          KC_NO,          TT(3),          KC_TRANSPARENT, KC_TRANSPARENT, TO(0),

      KC_NO,          KC_KP_EQUAL,    KC_KP_PLUS,     KC_KP_MINUS,    KC_KP_SLASH,    KC_KP_ASTERISK, KC_INSERT,
      KC_TRANSPARENT, KC_NO,          KC_KP_7,        KC_KP_8,        KC_KP_9,        KC_KP_EQUAL,    KC_SLCK,
                      KC_NO,          KC_KP_4,        KC_KP_5,        KC_KP_6,        KC_KP_DOT,      KC_PSCREEN,
      KC_TRANSPARENT, KC_NO,          KC_KP_1,        KC_KP_2,        KC_KP_3,        KC_KP_0,        KC_TRANSPARENT,
      KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,
      KC_NO,          KC_NO,          TT(3),          TO(0),          KC_TRANSPARENT, KC_TRANSPARENT
      ),

  [2] = KEYMAP(
      KC_TRANSPARENT, KC_F1,          KC_F2,          KC_F3,          KC_F4,          KC_F5,          KC_NO,
      KC_PAUSE,       KC_NO,          KC_NO,          KC_MS_UP,       KC_NO,          KC_NO,          KC_TRANSPARENT,
      KC_NO,          KC_NO,          KC_MS_LEFT,     KC_MS_DOWN,     KC_MS_RIGHT,    KC_NO,
      KC_NO,          KC_AUDIO_MUTE,  KC_AUDIO_VOL_DOWN,KC_AUDIO_VOL_UP,KC_NO,        KC_NO,          KC_TRANSPARENT,
      KC_NO,          KC_NO,          KC_NO,          KC_MS_BTN1,     KC_MS_BTN2,
      KC_NO,          KC_NO,          TO(0),          KC_NO,          KC_NO,          TT(3),

      KC_NO,          KC_F6,          KC_F7,          KC_F8,          KC_F9,          KC_F10,         KC_F11,
      KC_NO,          KC_NO,          KC_NO,          KC_UP,          KC_NO,          KC_NO,          KC_F12,
                      KC_NO,          KC_LEFT,        KC_DOWN,        KC_RIGHT,       KC_NO,          KC_MEDIA_PLAY_PAUSE,
      KC_NO,          KC_MEDIA_EJECT, KC_MEDIA_STOP,  KC_MEDIA_PLAY_PAUSE,KC_MEDIA_PREV_TRACK,KC_MEDIA_NEXT_TRACK,KC_NO,
      KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,
      KC_NO,          KC_NO,          TO(0),          TT(3),          KC_NO,          KC_NO
      ),

  [3] = KEYMAP(
      KC_TRANSPARENT, RGB_0000FF,     RGB_008000,     RGB_FFA500,     RGB_800080,     RGB_FF0000,     RGB_TOG,
      RGB_MOD,        RGB_VAI,        RGB_HUI,        KC_NO,          KC_NO,          KC_NO,          KC_NO,
      RGB_SLD,        RGB_VAD,        RGB_HUD,        KC_NO,          KC_NO,          KC_NO,
      KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,
      KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,
      KC_NO,          KC_NO,          TO(0),          KC_NO,          KC_NO,          TO(0),

      KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          RESET,
      KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_SYSTEM_POWER,
                      KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_SYSTEM_SLEEP,
      KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,
      KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,
      KC_NO,          KC_NO,          TO(0),          TO(0),          KC_NO,          KC_NO
      ),

};

const uint16_t PROGMEM fn_actions[] = {
  [1] = ACTION_LAYER_TAP_TOGGLE(1),
  [5] = ACTION_MODS_KEY(MOD_LCTL, BP_X),
  [6] = ACTION_MODS_KEY(MOD_LCTL, BP_C),
  [7] = ACTION_MODS_KEY(MOD_LCTL, BP_V),
  [8] = ACTION_MODS_KEY(MOD_LCTL, BP_Z),
  [9] = ACTION_MODS_KEY(MOD_LCTL, BP_Y),
  [10] = ACTION_MODS_KEY(MOD_LCTL, BP_A),
  [11] = ACTION_MODS_KEY(MOD_LCTL, BP_S),
  [12] = ACTION_MODS_KEY(MOD_LCTL, BP_F),
  [13] = ACTION_MODS_KEY(MOD_LCTL, BP_R),
};

// leaving this in place for compatibilty with old keymaps cloned and re-compiled.
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
{
      switch(id) {
        case 0:
        if (record->event.pressed) {
          SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
        }
        break;
      }
    return MACRO_NONE;
};

bool process_record_user(uint16_t keycode, keyrecord_t *record) {
  switch (keycode) {
    // dynamically generate these.
    case EPRM:
      if (record->event.pressed) {
        eeconfig_init();
      }
      return false;
      break;
    case VRSN:
      if (record->event.pressed) {
        SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
      }
      return false;
      break;
    case RGB_SLD:
      if (record->event.pressed) {
        rgblight_mode(1);
      }
      return false;
      break;
    
    case RGB_0000FF:
      if (record->event.pressed) {
        #ifdef RGBLIGHT_ENABLE
          rgblight_enable();
          rgblight_mode(1);
          rgblight_setrgb(0x00,0x00,0xff);
        #endif
      }
      return false;
      break;
    
    case RGB_008000:
      if (record->event.pressed) {
        #ifdef RGBLIGHT_ENABLE
          rgblight_enable();
          rgblight_mode(1);
          rgblight_setrgb(0x00,0x80,0x00);
        #endif
      }
      return false;
      break;
    
    case RGB_FFA500:
      if (record->event.pressed) {
        #ifdef RGBLIGHT_ENABLE
          rgblight_enable();
          rgblight_mode(1);
          rgblight_setrgb(0xff,0xa5,0x00);
        #endif
      }
      return false;
      break;
    
    case RGB_800080:
      if (record->event.pressed) {
        #ifdef RGBLIGHT_ENABLE
          rgblight_enable();
          rgblight_mode(1);
          rgblight_setrgb(0x80,0x00,0x80);
        #endif
      }
      return false;
      break;
    
    case RGB_FF0000:
      if (record->event.pressed) {
        #ifdef RGBLIGHT_ENABLE
          rgblight_enable();
          rgblight_mode(1);
          rgblight_setrgb(0xff,0x00,0x00);
        #endif
      }
      return false;
      break;
    
  }
  return true;
}

void matrix_scan_user(void) {

    uint8_t layer = biton32(layer_state);

    ergodox_board_led_off();
    ergodox_right_led_1_off();
    ergodox_right_led_2_off();
    ergodox_right_led_3_off();
    switch (layer) {
        case 1:
            ergodox_right_led_1_on();
            break;
        case 2:
            ergodox_right_led_2_on();
            break;
        case 3:
            ergodox_right_led_3_on();
            break;
        case 4:
            ergodox_right_led_1_on();
            ergodox_right_led_2_on();
            break;
        case 5:
            ergodox_right_led_1_on();
            ergodox_right_led_3_on();
            break;
        case 6:
            ergodox_right_led_2_on();
            ergodox_right_led_3_on();
            break;
        case 7:
            ergodox_right_led_1_on();
            ergodox_right_led_2_on();
            ergodox_right_led_3_on();
            break;
        default:
            break;
    }

};

Le fichier Hex :

:100000000C943E040C9485040C9485040C94850493
:100010000C9485040C9485040C9485040C9485043C
:100020000C9485040C9485040C94E6280C94B9294E
:100030000C9463210C9485040C9485040C94850421
:100040000C9485040C9485040C9485040C9485040C
:100050000C9485040C94CB210C9485040C94850499
:100060000C9485040C9485040C9485040C948504EC
:100070000C9485040C9485040C9485040C948504DC
:100080000C9485040C9485040C9485040C948504CC
:100090000C9485040C9485040C9485040C948504BC
:1000A0000C9485040C9485040C9485046572676F28
:1000B000646F782F6265706F204020302E352E39A6
:1000C000302D38332D676464333830332D646972D2
:1000D0007479006572676F646F782F6265706F2046
:1000E0004020302E352E39302D38332D676464335F
:1000F0003830332D6469727479000000F0A100007B
:100100000000000006010B0118012F011B01040172
:100110000E0138010F01290030003100E000880095
:1001200000001E00140004001D00650001581F009F
:100130001A0016001B00E200E10020000800070082
:100140000600E3002C002100150009001900E6005C
:100150000258220017000A00050000005200350076
:100160002B0000002800000051002E004C00000071
:100170002A000000500023001C000B0011000000AA
:100180004F00240018000D001000E6000258250062
:100190000C000E003600E7002800260012000F00B9
:1001A0003700E200E50027001300330038008A0022
:1001B00001582D002F003400E4008B0000000100E6
:1001C000CD00CB000100000000000000CC00CA0000
:1001D000C5000000105000004A005000C60000009A
:1001E0000100000052005100C700000001000000A3
:1001F0004D004F00C8000000035800004B004E00A7
:10020000C900000000000000010000000100000023
:100210000000000001000000010000000000670075
:100220000000000000000000000057005F005C00BC
:10023000590000000358560060005D005A0000009D
:100240000100540061005E005B00000001005500E9
:10025000670063006200000010504900470046003C
:100260000100000000000100480000000000000044
:1002700000003A0000000000A800000003583B0006
:100280000000F200AA00000000003C00F000F100B5
:10029000A900F40000003D000000F3000000F5009C
:1002A00010503E00000000000000000000000000B0
:1002B000010000000100000000000000000000003C
:1002C0000000000000003F0000000000B00000003F
:1002D0000000400000005000AD0000001050410040
:1002E00052005100AE0000000000420000004F002C
:1002F000AC0000000000430000000000AB00000064
:10030000035844004500AE0000000000000001005A
:10031000C15CD15C000000000000D25CC65CC75C20
:10032000000000001050D35CC25CC35C0000000001
:100330000000D45C00000000000000000000D55C5C
:1003400000000000000000001050D65C000000001B
:10035000000000000000C05C000000000000000081
:10036000000000000000000000000000000000008D
:10037000000000000000000000000000000000007D
:10038000000000001050000000000000000000000D
:10039000000000000000000000000000000000005D
:1003A00000000000000000001050005CA500A60046
:1003B00000000000000000000000000000002A2BE8
:1003C0002800000000000000000000000000000005
:1003D0000029000000002C1E34202122243426276E
:1003E000252E362D3738271E1F202122232425268F
:1003F0003333362E37381F0405060708090A0B0C5D
:100400000D0E0F101112131415161718191A1B1CA4
:100410001D2F3130232D350405060708090A0B0C62
:100420000D0E0F101112131415161718191A1B1C84
:100430001D2F3130354C000000000000000000008E
:1004400000000000000000000000000000000000AC
:100450000000000000000001010101010100010194
:10046000010100000000000000000000000000008A
:10047000010001000101010101010101010101016E
:10048000010101010101010101010101010101015C
:100490000100000001010000000000000000000059
:1004A000000000000000000000000000000000004C
:1004B0000001010101006801F000B40078005A0059
:1004C000643214643214783C1E1E140A05000000C5
:1004D000000101010202030405050607090A0B0CCD
:1004E0000E0F1112141517191B1D1F212325282A61
:1004F0002C2F313436393B3E414346494C4F5255FF
:10050000585A5D6164676A6D707376797C7F838603
:10051000898C8F9295989B9EA2A5A7AAADB0B3B6E1
:10052000B9BCBEC1C4C6C9CBCED0D3D5D7DADCDE08
:10053000E0E2E4E6E8EAEBEDEEF0F1F3F4F5F6F8EC
:10054000F9FAFAFBFCFDFDFEFEFEFFFFFFFFFFFFD9
:10055000FFFEFEFEFDFDFCFBFAFAF9F8F6F5F4F3FA
:10056000F1F0EEEDEBEAE8E6E4E2E0DEDCDAD7D546
:10057000D3D0CECBC9C6C4C1BEBCB9B6B3B0ADAA88
:10058000A7A5A29E9B9895928F8C898683807C7963
:100590007673706D6A6764615D5A5855524F4C4965
:1005A0004643413E3B393634312F2C2A282523211E
:1005B0001F1D1B1917151412110F0E0C0B0A09071A
:1005C000060505040302020101010000000000000D
:1005D0000000010101010101010101020202020208
:1005E00002020202030303030303030304040404DB
:1005F00004040505050505060606060607070707A0
:10060000080808080909090A0A0A0A0B0B0B0C0C4E
:100610000C0D0D0D0E0E0F0F0F10101111111212E7
:1006200013131414151516161717181819191A1A62
:100630001B1C1C1D1D1E1F1F2020212222232425C0
:100640002526272728292A2B2B2C2D2E2F2F3031FA
:100650003233343536363738393A3B3C3D3E3F400D
:1006600041424344464748494A4B4C4D4F505152F2
:1006700053555657585A5B5C5E5F606263646667A9
:10068000696A6C6D6E707173747678797B7C7E802C
:1006900081838486888A8B8D8F91929496989A9B79
:1006A0009D9FA1A3A5A7A9ABADAFB1B3B5B7B9BB8A
:1006B000BDBFC1C4C6C8CACCCFD1D3D6D8DADCDF5F
:1006C000E1E4E6E8EBEDF0F2F5F7FAFCFF1603459E
:1006D00000720067006F0044006F00780020004542
:1006E000005A00000016034500720067006F0044C6
:1006F000006F007800200045005A00000004030944
:100700000409026D00040100A0FA090400000103BD
:1007100001010009211101000122400007058103A8
:1007200008000A0904010001030102000921110166
:100730000001224D000705820308000A0904020097
:100740000103000000092111010001223600070504
:10075000830308000A0904030001030000000921C3
:100760001101000122390007058403200001120154
:10077000100100000008EDFE071301000102000156
:1007800005010906A101050719E029E71500250162
:10079000950875018102050819012905950575015E
:1007A00091029501750391010507190029F71500BC
:1007B000250195F875018102C005010980A1018517
:1007C000021601002603001A81002A830075109585
:1007D000018100C0050C0901A10185031601002655
:1007E0009C021A01002A9C02751095018100C00527
:1007F000010902A1010901A1000509190129051535
:10080000002501950575018102950175038101059A
:1008100001093009311581257F9502750881060986
:10082000381581257F950175088106050C0A380267
:100830001581257F950175088106C0C0050109064F
:10084000A101050719E029E71500250195087501A3
:100850008102950175088101050819012905950591
:10086000750191029501750391010507190029FF92
:10087000150026FF00950675088100C011241FBED3
:10088000CFEFDAE0DEBFCDBF04B603FE27C0809114
:10089000AB039091AC03A091AD03B091AE03873050
:1008A000904BA740B04BD1F41092AB031092AC0325
:1008B0001092AD031092AE0314BE84B7877F84BF3D
:1008C0000FB6F894A89580916000886180936000CD
:1008D000109260000FBEE0E0FFE3099511E0A0E098
:1008E000B1E0ECE2FAE502C005900D92A03DB1073F
:1008F000D9F723E0A0EDB1E001C01D92AB3AB207F9
:10090000E1F70E941B260C94142D0C940000109209
:10091000B9008AE08093B800089594EA9093BC00EF
:100920009091BC0097FFFCCF9091B900987F9830D0
:1009300021F0903111F081E008958093BB0084E8AC
:100940008093BC008091BC0087FFFCCF8091B900F0
:10095000887F883111F0803471F780E0089584E950
:100960008093BC008091BC0084FDFCCF08958093EF
:10097000BB0084E88093BC008091BC0087FFFCCF63
:100980009091B900987F81E0983209F480E0089551
:1009900084E88093BC008091BC0087FFFCCF8091ED
:1009A000BB00089580B38C7080BB81B3836F81BB23
:1009B000089580910001811115C080E40E948D048A
:1009C0008093000181110CC082E10E94B7048093E2
:1009D0000001811105C08FEF0E94B70480930001D0
:1009E0000E94AF0484B1807F84B985B1807F85B9CE
:1009F0008AB1837F8AB98BB1837F8BB93E98469841
:100A0000089508950C94BB060E94720C8093000117
:100A10000E94D9040E94D204E5E2F2E081ED91E067
:100A20001192DC0126E01D922150E9F7069622E0A2
:100A3000E333F207A9F70C941B090E94720C809310
:100A400000010E94D9040E94D204E5E2F2E0119272
:100A500082E0E333F807D9F7089596E0899FF00123
:100A60001124EF52FE4F30E020E080E041E050E002
:100A70009191992351F0DF01119791509C932F5F31
:100A80003F4F26303105A1F70895BA01022E01C06B
:100A9000660F0A94EAF7862BF2CF96E0699FB001C1
:100AA000112430E020E090E04FE0FC01022E02C073
:100AB000F595E7950A94E2F7E0FF06C0F901E60F25
:100AC000F71FEF52FE4F40832F5F3F4F2630310517
:100AD00061F70895BF92CF92DF92EF92FF920F934A
:100AE0001F93CF93DF9380910001882379F0809149
:100AF000D0018F5F8093D001811108C00E94720CD9
:100B000080930001811102C00E941C0C85E2E82E36
:100B100082E0F82E10E000E0CC24C394D12CD02F3A
:100B2000073008F06CC08091000181111BC080E487
:100B30000E948D0480930001811112C082E10E9405
:100B4000B7048093000181110BC0C601002E01C0C3
:100B5000880F0A94EAF780950E94B70480930001F9
:100B60000E94AF0480EA8A95F1F78D2F0E942D052F
:100B7000B82ED73008F063C0C0910001C11181C008
:100B800080E40E948D0480930001811112C083E1F2
:100B90000E94B7048093000181110BC081E40E9480
:100BA0008D0480930001811104C00E94C804C82FE5
:100BB000C0950E94AF04F70181917F019B2D909514
:100BC0009823CB21C92B6D2F8C270E944D05F7014F
:100BD0003197C0830E94D9040F5F1F4F0E3011055B
:100BE00009F09DCF0E941D0981E0DF91CF911F91F7
:100BF0000F91FF90EF90DF90CF90BF9008950A3053
:100C0000B1F038F4083069F0093071F0209A289872
:100C1000A9CF0C3091F070F00D30C1F73E9A469894
:100C2000A1CF219A29989ECF229A2A989BCF239AC6
:100C30002B9898CF529A5B9895CF539AFCCFCFB10F
:100C4000C095C170799B13C080E0C82B7C9B11C0FC
:100C500080E0C82B7D9B0FC080E0C82B7E9B0DC021
:100C600080E0C82B7F9B0BC080E0C82BA4CF82E024
:100C7000ECCF84E0EECF88E0F0CF80E1F2CF80E2ED
:100C8000F4CFC0E098CFE82FF0E0EB5DFD4F80811E
:100C900008950895611108C0FC018281882321F024
:100CA00083ED90E00E94180990E080E008958F5C49
:100CB0009C458830910508F05CC0FC01EB59F94F68
:100CC000DB0112968C910C94C62C6D0674067C0682
:100CD00082068F069906A406AF06882309F44AC047
:100CE0000E94642080E00895882309F443C08CEAC0
:100CF00090E00E941809F6CF8823E1F181E00E947C
:100D0000D110F0CF8823B1F10E94561181E00E94EA
:100D1000D1104FEF60E080E00E943E0FE3CF8823C8
:100D200049F10E94561181E00E94D11040E060E834
:100D3000F2CF8823F9F00E94561181E00E94D11071
:100D400040E065EA8FEFE8CF8823A1F00E945611BA
:100D500081E00E94D11040E860E080E8DDCF882388
:100D600049F00E94561181E00E94D11040E060E0FD
:100D7000E9CF81E00895CF936091F5027091F6027A
:100D80008091F7029091F8020E941720C82F0E94CC
:100D9000FA0B0E94FD0B0E94000C0E94030CC15034
:100DA000C730F8F4EC2FF0E0E852F94F0C94C62C61
:100DB000DF06E406E906E206E706EE06EC06CF915A
:100DC0000C94F10B0E94F10BCF910C94F40B0E9448
:100DD000F10BCF910C94F70B0E94F10B0E94F40BD6
:100DE000F8CFCF91089581E008950C9457060E94A2
:100DF000BB192FEF84E39CE0215080409040E1F745
:100E000000C000000C94F121FF920F931F93CF9329
:100E1000DF938C01FC01C081D1818091840281111A
:100E200050C08281882309F447C0CE010E94F41E7D
:100E3000F82E682FCE010E94981EBE018F2D0E94B1
:100E40003109EC01B8010E94F506882309F498C025
:100E5000B801CE010E94A20B882309F491C0B80109
:100E6000CE010E94C10C882309F48AC0C33CFCE572
:100E7000DF0709F4A4C008F054C0C5319CE5D907C8
:100E800028F5C230ECE5DE0708F0B9C0C115FCE575
:100E9000DF0709F470C0C130DC4509F478C081E097
:100EA0008093370280933802C801DF91CF911F9160
:100EB0000F91FF900C94F306CE010E94C81EF82EED
:100EC000BCCFCE010E94F41EBE01B9CFC03C9CE550
:100ED000D90709F466C0B0F4C531DC4501F7F80163
:100EE0008281CBE6DFE1882311F0C4E6DFE10E94D6
:100EF000DB1F8A7A09F063C189E2FE0109950E942D
:100F0000A81FCDCFC13C8CE5D80709F451C0C23C25
:100F1000DC4529F6F8018281882391F10E94461070
:100F20002FC0C73CECE5DE0709F45AC070F4F801A5
:100F30008281C53CFCE5DF0709F44DC008F446C0DA
:100F40008823F1F00E94A1101BC0C93CECE5DE072C
:100F500009F409C108F4D7C0CC3C8CE5D80709F4E2
:100F600046C0CD3CDC4509F09ACFF8018281882348
:100F700039F082E041C0F801828181110E94F706B8
:100F800080E0DF91CF911F910F91FF900895F801BC
:100F900082818823A9F380912203816080932203B8
:100FA000EFCFF8018281882359F30E946E11E8CFB8
:100FB000F8018281882321F30E944C11E1CFF801CE
:100FC00082818823E9F20E945E10DACF8823C1F281
:100FD0000E947D10D5CF882399F20E948F10D0CF28
:100FE000F8018281882361F20E94B910C9CFF8010B
:100FF0008281882329F280E00E94AE26C1CFF801C9
:101000008281882309F450CF0E948520811102C07B
:101010000E9464200E94982090E090939D0380930A
:101020009C03FE01E350FC4580919C038160E2310A
:10103000F105C8F4E25EF74F0C94C62C30083C086A
:101040004008440848084C085008540858085C08F0
:101050006008640868086C087008740878087C08E0
:1010600080919C03826080939C0380919C030E94EA
:101070009C200E94BB1984CF80919C038460F3CF95
:1010800080919C038860EFCF80919C038061EBCFBF
:1010900080919C038062E7CF80919C038064E3CFC2
:1010A00080919C038068DFCF80919C038460EACFAD
:1010B00080919C038E7FD7CF80919C038D7FD3CF6F
:1010C00080919C038B7FCFCF80919C03877FCBCF78
:1010D00080919C038F7EC7CF80919C038F7DC3CF6F
:1010E00080919C038F7BBFCF80919C038F77BBCF78
:1010F00080919C038B7FEACF90919C03892F97FB73
:1011000087F98058B0CFF8018281882361F010926E
:1011100037020E949521909334028093330282E03B
:101120000E94BC162DCF0E94DB1F85FF05C081E009
:1011300080933702809338028091370281110FC06B
:1011400080913302909134020E94A121883C910544
:1011500030F486E20E94911586E20E946D1682E0CC
:101160000E94C3160DCFF8018281882351F010929E
:1011700038020E949521909336028093350280E2D6
:10118000CFCF0E94DB1F81FF05C081E08093370233
:10119000809338028091380281110FC0809135020E
:1011A000909136020E94A121883C910530F487E29B
:1011B0000E94911587E20E946D1680E2D1CF85E3EF
:1011C0009CCE0F931F93CF93DF938C01D62FF80102
:1011D0002491222341F130E0F901EA54FC4FC491FB
:1011E0002A5C3B4FF90124912223C1F081EE0E9439
:1011F00091158C2F0E9491158C2F0E946D1681EEF7
:101200000E946D160F5F1F4F8D2F815000F3EFE985
:10121000FFE03197F1F700C00000F7CF8C2F0E945C
:1012200091158C2FEDCFDF91CF911F910F910895E4
:1012300060E00C94E1080C945C0C0C94020588238B
:1012400039F090E08A3010F44D960895069708958D
:1012500087E290E0089508950C942B090C942C09D2
:101260000895972F70E026E0929F600D711D112464
:10127000FB0194E5899FE00DF11D1124EE0FFF1F86
:10128000EA5EFE4F859194910895FC01EE0FFF1FD9
:10129000E650FF4F859194910895CF93DF93972F58
:1012A00070E026E0929F600D711D1124FB0194E512
:1012B000899FE00DF11D1124EE0FFF1FEA5EFE4F26
:1012C000859194910E94F40AEC01811520E4920723
:1012D00008F091C0C11580E3D80708F002C1C03EF4
:1012E000D10508F071C0C03CD10508F0E6C0C83A8D
:1012F000D10580F4C53AD10508F0E6C0C130D1056A
:1013000009F46EC020F0C430D10508F069C0D0E007
:10131000C0E066C0CD3BD105D0F7C83AD10509F48D
:1013200024C1C93AD10509F423C1CA3AD10509F447
:1013300022C1CB3AD10509F421C1CC3AD10509F437
:1013400020C1CB3BD10509F41FC1CC3BD10509F429
:101350001EC1CD3AD10509F41DC1C03BD10509F428
:101360001CC1CE3AD10509F41BC1CF3AD10509F40D
:101370001AC1C13BD10509F419C1C23BD10509F419
:1013800018C1C33BD10509F417C1C43BD10509F409
:1013900016C1C53BD10509F415C1C63BD10509F4F9
:1013A00014C1C73BD10509F413C1C83BD10509F4E9
:1013B00012C1C93BD10509F411C1CA3BD10509F0DD
:1013C00010C1CAE2D6E40CC0CF3FD10509F060F4E9
:1013D000C03FD10508F083C0C83ED10508F097CFC3
:1013E000CE01DF91CF910895C11590E2D907C0F3E6
:1013F000CE019F7065C081159445A0F5C11583E5A8
:10140000D80708F08FC0C11591E5D90708F5C115B7
:1014100020E5D20708F46FC09E0154E03695279569
:101420005A95E1F723703C2F337081E090E002C0C1
:10143000880F991F3A95E2F79C68922BC695C6953E
:10144000C37020E2C29FE0011124C82BD92BC8CF62
:10145000C11582E5D80708F051C0DC2FCC27C16F39
:10146000D06ABECFC11596E5D90758F49C2F8827BE
:10147000C115D54508F46AC0EC01CC27DF71D062F4
:10148000AFCFC11588E5D80708F441CFC11599E55C
:10149000D90708F45FC0CE0190568115904208F03C
:1014A00036CF8D2F8F710E94740B90E0982F882774
:1014B00088279F71DD27D062C8CFCE01805C91095B
:1014C0000E944509EC018CCFC53AD10509F447C00B
:1014D000C63AD10509F446C0C3E8D0E481CFD0654F
:1014E0007FCFCE019927D3FF03C0EC01D86C78CF12
:1014F000EC01D06C75CFDF70D06A72CF9E01237083
:10150000332781E090E002C0880F991F2A95E2F707
:10151000C695C69520E2C29FE0011124C82BD92BA5
:10152000DC685ECF9E012370332781E090E002C02B
:10153000880F991F2A95E2F7C695C69520E2C29FAB
:10154000E0011124C82BD92BDA684ACFEC01C46F13
:10155000D06A46CFDC2FCC27C06FD06A41CFC1E81C
:10156000D0E43ECFC2E8D0E43BCFC2EED4E438CFE3
:10157000C9EED4E435CFCAEED4E432CFC5EBD4E41F
:101580002FCFC6EBD4E42CCFC3EBD4E429CFC4EBEC
:10159000D4E426CFC7EBD4E423CFCCECD4E420CFE3
:1015A000CDECD4E41DCFC3E8D5E41ACFCAE8D5E426
:1015B00017CFC2E9D5E414CFC4E9D5E411CFC1E215
:1015C000D6E40ECFC3E2D6E40BCFC4E2D6E408CF14
:1015D000C5E2D6E405CFC6E2D6E402CFC7E2D6E440
:1015E000FFCEC0E0D4E4FCCE8238910549F1B0F4DE
:1015F0008133910509F45CC048F48932910509F4FE
:1016000052C08A32910509F458C008958533910576
:1016100009F444C08933910599F00895833E9105FA
:1016200031F138F4803E910591F0823E9105B1F0A0
:101630000895863E910511F1873E910541F1089587
:1016400020919C032370C9F080EE90E008952091D2
:101650009C0320FF12C089E390E0089520919C0331
:1016600022FF0BC024FF2EC090E080E0089520915F
:101670009C0322FD2AC024FDF7CF089520919C03EE
:1016800023FFFBCF24FDF0CF87EE90E0089520915B
:101690009C0323FFF0CF86EE90E0089520919C03F9
:1016A00025FD16C0089520919C0325FD14C00895C2
:1016B00020919C0326FD12C0089520919C0326FDD5
:1016C00010C0089583EE90E0089582EE90E00895B2
:1016D00089E290E0089585E390E008958AE290E041
:1016E000089581E390E0C9CFCF93C82F0E9498203E
:1016F000282F30E030939D0320939C0382FF06C087
:101700009C2F9871983079F4C77FC46083FF06C01E
:101710009C2F9871983171F4C77EC46184FDC77E97
:101720008C2FCF9108959C2F9471943079F7CB7FB3
:10173000C860ECCF9C2F9471943181F7CB7EC86147
:10174000EDCF08950F931F93CF938C01FB018281FE
:10175000811106C0C1E08C2FCF911F910F91089588
:10176000C0914602C11125C006311C4599F70E945F
:10177000A10B81E0809346020E949521909345023F
:10178000809344021092390210923B0210923A0266
:1017900010923D0210923C0210923F0210923E02C3
:1017A00010924102109240021092430210924202A3
:1017B000D2CF80914402909145020E94A121883CA1
:1017C000910540F680913902E82FF0E0EE0FFF1FFF
:1017D000E65CFD4F118300838F5F80933902C0E088
:1017E000BACF259A2D9A0895269A2E9A0895279A67
:1017F0002F9A089556985E98089525982D980895E3
:1018000026982E98089527982F9808950E94FA0BED
:101810000E94FD0B0E94000C0C94030C90E090932E
:1018200089008093880090938B0080938A00909326
:101830008D0080938C0008950E94060C8FEF0E940B
:101840000E0C0E94F10B2FEF80E792E021508040B8
:101850009040E1F700C000000E94F40B2FEF80E7FA
:1018600092E0215080409040E1F700C000000E94CB
:10187000F70B2FEF80E792E0215080409040E1F796
:1018800000C000000E94FD0B2FEF80E792E0215086
:1018900080409040E1F700C000000E94000C2FEF54
:1018A00080E792E0215080409040E1F700C00000C6
:1018B0000E94030C0C94060C89EA8093800089E056
:1018C0008093810024982C983F988AB18F7C8AB9A4
:1018D0006E98479A8BB180638BB9769A0E941C0CE4
:1018E0000C94010580E280930001809147028111F0
:1018F0000EC00E94870481E0809347022FEF83EDA2
:1019000090E3215080409040E1F700C0000080E467
:101910000E948D048093000181112EC00E94B704A3
:1019200080930001811128C00E94B70480930001B8
:10193000811122C08FE30E94B704809300018111BE
:101940001BC00E94AF0480E40E948D0480930001BC
:10195000811112C08CE00E94B704809300018111B4
:101960000BC00E94B70480930001811105C08FE372
:101970000E94B704809300010E94AF04809100018F
:101980000895CF93DF93EC01C13080E8D807C8F009
:10199000FB0182818823A9F080914802811109C04E
:1019A0008CE090E00E94CC2C0E94E50C81E08093BA
:1019B00048020E94EC0CCE019F770E94AB0D0E9462
:1019C000630D81E0DF91CF91089580934902682FE4
:1019D0008CE090E00C94E02CE0910201F091030186
:1019E00080818093510381FF03C081EE0E946D16B8
:1019F0008091510385FF03C085EE0E946D16809192
:101A0000510380FF03C080EE0E946D168091510348
:101A100084FF03C084EE0E946D168091510382FF03
:101A200003C082EE0E946D168091510386FF03C0B1
:101A300086EE0E946D168091510383FF03C083EEF2
:101A40000E946D168091510387FF03C087EE0E94AC
:101A50006D1680914902813081F058F0823001F199
:101A6000843031F18FE39CE90197F1F700C0000069
:101A7000089582EE0E949115F5CF80EE0E94911597
:101A800081EE0E94911588E10E94911588E10E94E3
:101A90006D1681EE0E946D1680EE0E946D16E2CFEB
:101AA00082EE0E94911587E50E94911587E5F5CF9A
:101AB00086EE0E94911586EE0E946D1688E10E94C6
:101AC000911588E1EACF809149028130F1F110F05F
:101AD000823019F482EE0E946D168091510381FFCD
:101AE00003C081EE0E9491158091510385FF03C0D0
:101AF00085EE0E9491158091510380FF03C080EE16
:101B00000E9491158091510384FF03C084EE0E94CE
:101B100091158091510382FF03C082EE0E949115BE
:101B20008091510386FF03C086EE0E94911580913B
:101B3000510383FF03C083EE0E94911580915103EE
:101B400087FF08C087EE0C9491158CE20E949115D6
:101B50008CE2C1CF0895EF92FF921F93CF93DF9352
:101B60007C01CCE0D0E0C7010C2E02C09695879591
:101B70000A94E2F7182F1F70812F0E941F090E94FC
:101B80009115812F0E941F090E946D162497CC3F4A
:101B90008FEFD80741F7DF91CF911F91FF90EF9022
:101BA00008958823B9F05198599A5098589A95E019
:101BB0009A95F1F70000509A589895E09A95F1F7A8
:101BC0000000882311F0519A599885E08A95F1F721
:101BD00000000895519A5998E8CF8BB18C7F8BB94A
:101BE0005098589A5198599A85E08A95F1F70000D3
:101BF00008958AB18C7F8AB985E08A95F1F7000053
:101C0000519A599885E08A95F1F70000509A5898B2
:101C100085E08A95F1F7000008955098589A85E07C
:101C20008A95F1F700005198599A85E08A95F1F765
:101C300000000895CF93DF93D82FC8E08D2F8078D0
:101C40000E94D10DDD0FC150C9F780E00E94D10D77
:101C500085E08A95F1F7000085E08A95F1F70000AC
:101C600080E0DF91CF9108953BB1242F209523236D
:101C70003BB1432B3FB7F894FC01680F791FE6177F
:101C8000F70711F43FBF0895819198E04BB9000028
:101C900000C087FF2BB9880F000000C000C000C043
:101CA0002BB900C09A9591F7EACFAF92BF92CF922D
:101CB000DF92EF92FF920F931F93CF93DF938C01EC
:101CC000EB01CFB6D090BC00F8948091BC008B7F24
:101CD0008093BC000E94ED0D0E94F90D84E80E94E3
:101CE0001A0ECC0FDD1FCC0FDD1F78015E01A00E98
:101CF000B11EEA14FB04A9F40E940D0ECFBED092CF
:101D0000BC00579A40E8BE01C801DF91CF911F91F6
:101D10000F91FF90EF90DF90CF90BF90AF900C9419
:101D2000340EF70181917F010E941A0EE2CFCF920B
:101D3000DF92EF92FF920F931F93CF93DF93E9010E
:101D4000662309F466C0E42EF12CEFEFF0E0E61B09
:101D5000F109EE9D8001EF9D100DFE9D100D1124E7
:101D6000212FE12FFF27EE1AFF0A5CE3C52ED12CAD
:101D7000B6010E949E2CFB01BC01E69EC001E79EBD
:101D8000900DF69E900D1124B6010E949E2CE2301B
:101D9000F10589F168F4812F262F210F309781F00A
:101DA000242F461B319761F080E020E040E008C01E
:101DB000E430F10551F128F1842F861B3597A1F706
:101DC000E42FF0E0E353FA4F4491E22FF0E0E353C5
:101DD000FA4F9491E82FF0E0E353FA4FE4914983EE
:101DE0009883EA83DF91CF911F910F91FF90EF903D
:101DF000DF90CF900895862F810FE42F412F2E2F53
:101E0000DFCFE42FE61B842FF9CF842F462F410F1D
:101E1000D7CF842F242FD4CF88E090E00C94D42CFB
:101E2000AB01BC0188E090E00C94F22CE2E5F3E019
:101E300083E08083109253038FEF828383836091CA
:101E400052037091530380915403909155030C9465
:101E5000100F80915203EAE5F3E080FF06C06FE0C7
:101E600070E08AE593E00C94550E11821082128284
:101E7000349683E0E639F807C1F7F1CFEAE5F3E0FD
:101E8000818360834283349693E0E639F907C1F792
:101E90000C94290FEF92FF920F931F93CF93DF9330
:101EA00000D000D0CDB7DEB7182FE92EF62E042FC4
:101EB0008091520390915303A0915403B091550324
:101EC0008093560390935703A0935803B0935903FC
:101ED0008091520380FF1FC09E012F5F3F4F812FD3
:101EE0009E2D0E94970E8091560310FB87F98093D8
:101EF00056031695809157038078812BE0FA87F975
:101F000080935703F0925803009359034B816981E2
:101F10008A810E943E0F0F900F900F900F90DF91DB
:101F2000CF911F910F91FF90EF9008956F927F9244
:101F30008F929F92AF92BF92CF92DF92EF92FF92D9
:101F40000F931F93CF93DF93EC01662E742E809135
:101F5000520380FF8CC0982F9E77923079F5CE0186
:101F60000E944A0F809152039C2FC0FB87F98093F7
:101F700052039695809153038078892BD0FB87F983
:101F800080935303609254037092550360915203FF
:101F9000709153038091540390915503DF91CF9139
:101FA0001F910F91FF90EF90DF90CF90BF90AF9077
:101FB0009F908F907F906F900C94100FE82FE69574
:101FC000EF739EE39E0F9F73943018F47090550347
:101FD000C9CF9AE39E0F9F73993070F4881F8827AA
:101FE000881F90915303292F220FC22FC82B97FBD4
:101FF000992790F9D92FB6CF87E28E0F8F738A3049
:1020000008F0B0CFE951FF0B2FEFE0FF21E0EE7FAA
:10201000EA54FB4F859194916FE070E00E949E2CF2
:1020200026035001279FB00C11247E0188E9E81A8D
:102030008EEFF80A0AE513E086E9C82E83E0D82E71
:1020400098E6892E99249394C701B4010E949E2C8E
:102050009801472D662D0E94970EEA0CFB1C0C5F21
:102060001F4FC016D10681F70E94290F7BCFDF9149
:10207000CF911F910F91FF90EF90DF90CF90BF9085
:10208000AF909F908F907F906F900895E2E5F3E07E
:102090002081221F2227221F30915303432F440FF8
:1020A000842F822B37FB992790F90C9668E671E014
:1020B0000E94B22C438162810C94960F20915203AE
:1020C000221F2227221F30915303432F440F842FB6
:1020D000822B37FB992790F98C30910540F4845A74
:1020E0009E4F40915503609154030C94960F0C97AA
:1020F00068E671E00E94B22CF4CFE2E5F3E0808163
:10210000881F8827881F90915303292F220F97FB40
:10211000992790F943816FEF822B0C94960FE2E59B
:10212000F3E08081881F8827881F90915303292F0F
:10213000220F97FB992790F9438160E0822B0C9442
:10214000960F40915503443F90F4445F80915203B1
:10215000881F8827881F90915303292F220F97FBF0
:10216000992790F960915403822B0C94960F4FEFAE
:10217000EDCF409155034C3090F04C50809152037C
:10218000881F8827881F90915303292F220F97FBC0
:10219000992790F960915403822B0C94960F40E09C
:1021A000EDCF9091520390FF42C09178811126C0EB
:1021B0009260909352036091520370915303809107
:1021C0005403909155030E94100F80915203982F51
:1021D0009E779230D9F410925F02881F8827881F5B
:1021E00090915303292F220F97FB992790F9409143
:1021F000550360915403822B0C94960F833210F098
:102200009464D7CF8F73880F982BD3CF982F969540
:102210009F732EE3290F2F73273120F491E09093C1
:102220005F02DBCF995D9F739A30B8F6D4CF0895E3
:102230008091220381608093220381E08093600279
:102240000E948520811104C00E9464200E94160F04
:102250000E940C0F609352037093530380935403B6
:10226000909355036E7761F40E94160F0E940C0F35
:1022700060935203709353038093540390935503D8
:1022800081E080935F028091520380FF04C08695B5
:102290008F730C94D11008958091520386958F739B
:1022A0008F5F833208F081E00C94D110CF93DF93DD
:1022B000C2E5D3E088818160888360915203709188
:1022C000530380915403909155030E94100F88810D
:1022D00086958F73DF91CF910C94D110909152031A
:1022E000892F8E7F90FF816080935203609152030B
:1022F0007091530380915403909155030E94100FE5
:102300008091520380FF04C086958F730C94D11086
:1023100010925F022FEF80E792E0215080409040C2
:10232000E1F700C000000C94290FCF93C82F8091D3
:102330005D0290915E020E94A121EC2FF0E0E75334
:10234000FB4FE491E817190609F010F50E9495215A
:1023500090935E0280935D02E0915C02F0E0E353B3
:10236000FB4F449180915203881F8827881F9091CA
:102370005303292F220F97FB992790F9609154035B
:10238000822B0E944A0F80915C028F5F80935C02D7
:10239000CF910895CF93C82F80915A0290915B02FC
:1023A0000E94A121EC2FF0E0EA53FB4FE491E817E3
:1023B000190609F0E8F40E94952190935B0280933E
:1023C0005A024091550360915403809158029091B4
:1023D00059020E944A0F8091580290915902019629
:1023E00068E671E00E949E2C9093590280935802F7
:1023F000CF910895CF92DF92FF920F931F93CF93C7
:10240000DF93F82E80915602909157020E94A121ED
:10241000EF2DE695F0E0EA53FB4FE491E81719063B
:1024200009F0A8F50E9495219093570280935602D7
:102430000AE513E0D0E0C0E088E6C82EDD24D3949E
:1024400080915402909155028C0F9D1FB6010E94FD
:102450009E2C980140915503609154030E94970E61
:1024600068960C5F1F4FC83681E0D80749F70E9475
:10247000290F8091540290915502F0FE10C00196F0
:10248000BE010E949E2C9093550280935402DF91CE
:10249000CF911F910F91FF90DF90CF9008950197FA
:1024A000F2CFAF92BF92CF92DF92EF92FF920F9353
:1024B0001F93CF93DF93C82FFF24FA9480FD02C0AF
:1024C000FF24F39480915202909153020E94A12123
:1024D000C695EC2FF0E0ED53FB4FE491E817190699
:1024E00011F008F053C00E949521909353028093FD
:1024F0005202CAE5D3E010E000E097E0C92ED12CEB
:10250000198218821A8287E0A82EB12CE12C8091C2
:1025100051028E0D87FD815F082E000C990B081764
:102520001907E9F4209155032A9DC0012B9D900DB8
:102530001124B6010E94B22C462F80915203881FAD
:102540008827881F90915303592F550F97FB992780
:1025500090F99E0160915403852B0E94970EEF0C19
:1025600081E0A81AB10899F60F5F1F4F24960F302B
:10257000110531F60E94290F8091510291E0F91264
:1025800012C081110EC08EE080935102DF91CF9175
:102590001F910F91FF90EF90DF90CF90BF90AF9081
:1025A00008958150F1CF90E00196B8010E94B22CBD
:1025B000EBCFBF92CF92DF92EF92FF920F931F93D8
:1025C000CF93DF93CDB7DEB7EC970FB6F894DEBFAD
:1025D0000FBECDBF182F80914F02909150020E94E4
:1025E000A121E12FF0E0E054FB4FE491E817190638
:1025F00011F008F07AC00E949521909350028093C8
:102600004F028E010F5F1F4FF12CE12C6801D801A2
:1026100011961C9211971C9212961C92B12C9091BB
:10262000010180914E02B99E800D11248F300CF073
:102630008EE087FD80E0082E000C990BE816F90665
:10264000A1F480915203881F8827881F909153031B
:10265000592F550F97FB992790F9980140915503F1
:1026600060915403852B0E94970EB394B7E0BB1280
:10267000D6CFEFEFEE1AFE0A0C5F1F4FFFE0EF160A
:10268000F10429F62AE533E009E010E09FE0E92EA5
:10269000F12CC801B7010E94B22CFC01EE0FFF1F04
:1026A000EE0FFF1FEC0DFD1D8181D90111968C935A
:1026B000119780818C93828112968C930F5F1F4FAC
:1026C0002C5F3F4F0831110521F70E94290F90918F
:1026D000010180914E029130E1F48A3FB4F489EF18
:1026E00080934E028FEF80930101EC960FB6F89421
:1026F000DEBF0FBECDBFDF91CF911F910F91FF9035
:10270000EF90DF90CF90BF900895815080934E025C
:10271000ECCF86312CF085E180934E0281E0E3CF4F
:102720008F5FF4CFEF92FF920F931F93CF93DF93BE
:1027300080914C0290914D020E94A121883E9340CD
:10274000C8F10E94952190934D0280934C02C09154
:102750004A02D0914B022196C170DD27D0934B02E3
:10276000C0934A028AE5E82E83E0F82E10E008E7DD
:10277000812F86958C0F9D2F911D81709927970130
:102780004091550360915403FC010E9FC0010F9FBF
:10279000900D11240E94970E1F5FF4E0EF0EF11CC4
:1027A0001F3031F7DF91CF911F910F91FF90EF9084
:1027B0000C94290FDF91CF911F910F91FF90EF9013
:1027C000089580915F02882391F190915203892F9F
:1027D00086958F732EE3280F2F73243018F48250C0
:1027E0000C9495112AE3280F2F73233018F4865088
:1027F0000C94CA1127E3280F2F73263018F4895040
:102800000C94FA1121E3280F2F73263018F48F50FF
:102810000C9451122BE2280F2F73233018F485519A
:102820000C94D9129E77903311F40C94921308955E
:1028300090936602809365020895E0916502F0919D
:102840006602309721F00190F081E02D099480E03C
:102850000895E0916502F0916602309721F00280C0
:10286000F381E02D09940895E0916502F0916602EC
:10287000309721F00480F581E02D0994089520918E
:102880006302309164022817390771F09093640253
:1028900080936302E0916502F0916602309721F027
:1028A0000680F781E02D099408952091610230910E
:1028B00062022817390771F09093620280936102D7
:1028C000E0916502F0916602309721F00084F18575
:1028D000E02D0994089508950C946B140E948C21A6
:1028E0000E9404050E9413220C941811BF92CF92EB
:1028F000DF92EF92FF920F931F93CF93DF93CDB7A9
:10290000DEB72A970FB6F894DEBF0FBECDBF0E9488
:102910006A0588E6C82E82E0D82E10E000E0B02ECE
:10292000802F0E944306E82EF601F1906F01F81601
:1029300009F45AC08091220381FD0E94490690E06B
:1029400080E0FE242F2D30E0482FB901082E02C070
:10295000759567950A94E2F760FF41C08E83BF8248
:1029600081E090E06C0102C0CC0CDD1C4A95E2F7DE
:102970002E2D30E02C213D21232B09F480E0888787
:102980000E9495218160782F9A8789874E815F8187
:1029900068858A850E945315F801E859FD4F8081AA
:1029A0008C2580830E94A6230E941D1490916702AB
:1029B000891789F10E941D14809367022A960FB629
:1029C000F894DEBF0FBECDBFDF91CF911F910F9165
:1029D000FF90EF90DF90CF90BF900C942E0901965E
:1029E0008630910509F0B0CF0F5F1F4F0E301105F3
:1029F00009F095CF8FEF89838A831B820E949521EE
:102A00008160782F9D838C8349815A816B818D8170
:102A10000E945315C7CF2A960FB6F894DEBF0FBE9B
:102A2000CDBFDF91CF911F910F91FF90EF90DF907D
:102A3000CF90BF900895CF93DF93DC018C91682FE6
:102A400070E021E030E001C0220F8A95EAF711968C
:102A50004C91119750E0EA01CA58DD4F98811296C7
:102A60008C9112978823C9F0809185028823C1F048
:102A700086E0849FF001859FF00D1124E60FF71F7B
:102A8000EE0FFF1FEC5EFE4F408151814D935C9332
:102A9000292B2883DF91CF910895892F8223E6CFB8
:102AA00020952923F6CFCF93DF93CDB7DEB72B97B1
:102AB0000FB6F894DEBF0FBECDBF942F4F83252FE6
:102AC000588769877A878B874A855B8581E0452BA4
:102AD00031F02F3F19F481E09F3F09F080E080FD45
:102AE00004C0CE0107960E941B151E821D8285E040
:102AF000FE013796DE01119601900D928A95E1F75D
:102B000049815A816B817C818D819E810E946D1CDF
:102B10002B960FB6F894DEBF0FBECDBFDF91CF91DD
:102B20000895882309F4D8C0823871F40E941D14D6
:102B300081FDD2C089E30E94641F0E94A81F89E31F
:102B40000E946B1F0C94A81F833859F40E941D1417
:102B500080FDC2C083E50E94641F0E94A81F83E518
:102B6000EFCF843859F40E941D1482FDB5C087E46C
:102B70000E94641F0E94A81F87E4E2CF9CEF980F79
:102B8000913A18F40E94641FDDCF90E2980F9830BC
:102B900050F4877091E001C0990F8A95EAF7892F68
:102BA0000E94DE1FCFCF9BE5980F933070F4853ADB
:102BB00031F0863A39F083E890E00C943F1481E8D4
:102BC00090E0FBCF82E890E0F8CF98E5980F953140
:102BD00008F082C0883A09F440C0893A09F440C03C
:102BE0008A3A09F440C08B3A09F440C08C3A09F49F
:102BF00040C08B3B09F440C08C3B09F440C08D3A87
:102C000009F440C0803B09F440C08E3A09F440C04A
:102C10008F3A09F440C0813B09F440C0823B09F47B
:102C200040C0833B09F440C0843B09F440C0853B6D
:102C300009F440C0863B09F440C0873B09F440C01A
:102C4000883B09F440C0893B09F440C08A3B09F441
:102C500040C090E080E00C94551482EE90E0FBCFF1
:102C600089EE90E0F8CF8AEE90E0F5CF85EB90E02A
:102C7000F2CF86EB90E0EFCF83EB90E0ECCF84EBEC
:102C800090E0E9CF87EB90E0E6CF8CEC90E0E3CFEB
:102C90008DEC90E0E0CF83E891E0DDCF8AE891E031
:102CA000DACF82E991E0D7CF84E991E0D4CF81E215
:102CB00092E0D1CF83E292E0CECF84E292E0CBCF1C
:102CC00085E292E0C8CF86E292E0C5CF87E292E04B
:102CD000C2CF8AE292E0BFCF0895882309F44BC0A7
:102CE000823871F40E941D1481FF45C089E30E945F
:102CF000641F0E94A81F89E30E946B1F0C94A81FE9
:102D0000833859F40E941D1480FF35C083E50E946A
:102D1000641F0E94A81F83E5EFCF843859F40E94F6
:102D20001D1482FF28C087E40E94641F0E94A81F10
:102D300087E4E2CF9CEF980F913AF0F290E2980F7F
:102D4000983050F4877091E001C0990F8A95EAF7A6
:102D5000892F0E94E41FD2CF9BE5980F933020F477
:102D600090E080E00C943F14885A853120F490E084
:102D700080E00C9455140895882321F00E94DE1FF2
:102D80000C94A81F0895882321F00E94E41F0C943E
:102D9000A81F08958F929F92AF92BF92DF92EF92F9
:102DA000FF920F931F93CF93DF937C01D62FC72FF2
:102DB000FC01058102950F70128111110E94FD1F07
:102DC0000E94A11FD82E882371F0112331F180E2D7
:102DD0008D0F883010F182E00E948B1F0E94A11F8E
:102DE00091E0D82ED926BC2EB2949FE0B922EB2DCB
:102DF000F0E0E350F94E0C94C62C0F170F175F1735
:102E00005F179A17C2173119A1170418A1179F1835
:102E10009F182819A117A1175119D12CE4CF0C2FF5
:102E20000F70C07F11F00295007F1123A9F00023DD
:102E300059F080E28D0F883010F0D11109C0802F39
:102E40000E94DE1F0E94A81F8D2F0E94911514C0A2
:102E5000802F0E94EF1FF6CF8D2F0E946D1600234A
:102E600059F080E28D0F883010F0D11124C0802FEE
:102E70000E94E41F0E94A81FDD2009F42BC20E94BB
:102E80007E1F80FD27C2F70112820E94781F0E94D8
:102E9000FC1DC7010E9476190E94781FDF91CF9117
:102EA0001F910F91FF90EF90DF90BF90AF909F9098
:102EB0008F900C941D1E802F0E94F51FDBCFFC2FDE
:102EC000FF70BF2EC07FC03219F0B29480EFB822DD
:102ED000DD2339F0D130F9F0112331F1002329F04D
:102EE000B3CF112361F0011104C08B2D0E94BC16D9
:102EF000C3CF8B2D0130D1F70E941120BDCF01111E
:102F000006C00E9414208B2D0E94C316B5CF01303D
:102F100009F4B2CFF6CF112321F0023008F0ACCF84
:102F2000E4CF0111A9CFEFCF002369F38D2F0E94C9
:102F30006D16A2CF8C2F86958695837079F081309F
:102F4000B9F0E8E0BE1609F49BC0BE1608F494CFB1
:102F500086EF8B0D823008F493C08ECF8D2F9C2F7F
:102F60009370111102C090E080E00E943F1484CF62
:102F70008D2F9C2F9370111102C090E080E00E9471
:102F800055147ACF112309F1D53F99F0D63FB9F006
:102F9000D43F49F480919603909197038160909378
:102FA0009703809396038D2F0E94AF220E949B234C
:102FB00063CF80919603909197038260F0CF8091C8
:102FC0009603909197038460EACFD53F89F0D63F6E
:102FD000A9F0D43F49F480919603909197038E7F96
:102FE00090939703809396038D2F0E941723DECF33
:102FF00080919603909197038D7FF2CF80919603F5
:10300000909197038B7FECCF8C2F837009F04BC08E
:10301000111136C02D2F229526952770220F220FD1
:103020006D2F6F70862E912CB12CA12C022E04C016
:10303000880C991CAA1CBB1C0A94D2F760E070E0B3
:10304000CB01D4FF0FC06FE070E080E090E004C0DF
:10305000660F771F881F991F2A95D2F76095709584
:1030600080959095C695C695C370C23071F0A0F456
:10307000682979298A299B29C13091F00E94B01DC5
:103080000E941D140E942E09F7CE682979298A29E9
:103090009B290E94C21DF4CF0E94B01DC501B4013E
:1030A0000E949E1DEDCF8695112311F08C2F81700B
:1030B000882331F32D2F229526952770220F220F7A
:1030C0006D2F6F70862E912CB12CA12C022E04C076
:1030D000880C991CAA1CBB1C0A94D2F760E070E013
:1030E000CB01D4FF0FC06FE070E080E090E004C03F
:1030F000660F771F881F991F2A95D2F760957095E4
:1031000080959095C695C695C370C23051F080F4F5
:10311000682979298A299B29C13071F00E94731E80
:10312000AFCF682979298A299B290E94851EA8CFBB
:103130000E94731EC501B4010E94611EA1CFE0E28E
:10314000ED0FE53108F065C0F0E0E755F74E0C945F
:10315000C62CBE18BE18BE18BE18BE18BE18BE18A3
:10316000BE18BE18BE18BE18BE18BE18BE18BE18AF
:10317000BE18CF18DC18E318EA18F418DF708C2F8B
:103180008F71112331F00E94FC1D8D2F0E94BC16FF
:10319000D8CE0E941D1E8D2F0E94C316D2CE1123A1
:1031A00039F00111CECE8C2F8F710E94401EC9CEF6
:1031B000023008F0C6CEF7CF8C2F8F71112339F073
:1031C0000E94FC1DBECE8C2F8F711123C9F30E946B
:1031D0001D1EB7CE112329F08C2F8F710E94E71D81
:1031E000B0CE0E94E21DADCE112349F0CF718C2FDD
:1031F0000E94FC1D63E08C2F0E94821FA2CE81E002
:103200000E948B1F023008F49CCE82E00E948B1F2C
:1032100098CE112349F0002321F08D2F0E949115A3
:1032200090CE8C2F8F71CCCF002379F0D93349F415
:103230002FEF87EE93E0215080409040E1F700C0EF
:1032400000008D2F0E946D167CCE8C2F8F71BFCF0A
:103250004C2F4F706D2FC7010E944A060E94161D09
:103260000BCED23F39F160F4D03F99F0D13F51F10C
:10327000002301F18D2F112351F10E94911511C0EE
:10328000D43FD9F0A8F0D53F99F711110AC081E0D9
:1032900006C0112331F08091850291E08927809347
:1032A00085024C2F4F706D2FC7010E94300949CE07
:1032B00081E0182710938502F4CF1111F2CF1092FC
:1032C0008502EFCF0023B1F31111EBCFE4CF0E94C1
:1032D0006D16E7CFDF91CF911F910F91FF90EF9087
:1032E000DF90BF90AF909F908F9008950F931F93A2
:1032F000CF93DF93EC01988189812B813C81232B33
:1033000039F08F3F19F481E09F3F19F080E001C050
:1033100081E080FD17C0CE010E940407882391F050
:10332000688179818A810E94401F8C010E94971ECA
:103330000E949B1DB801CE01DF91CF911F910F918B
:103340000C94CA16DF91CF911F910F9108950E949E
:10335000FD1F0E940E200E94721F0E94A81F0E9443
:1033600048240E949B2390E080E00E943F1490E05C
:1033700080E00C9455140E94EC1F0C94A7190E9435
:10338000361FE92FE295EF70E250EE30E0F4F0E006
:10339000E453F64E0C94C62CDA19DA19E319E31942
:1033A000E519E319E319E319DA19DA19EA19E31946
:1033B000E319EA19803F19F020F4803E20F481E0FF
:1033C0000895843FE1F380E00895803EC0F3813F9B
:1033D000D1F7F5CF93FB882780F90895CF93DF933A
:1033E00000D000D01F92CDB7DEB70F900F900F9096
:1033F0000F900F90DF91CF910895CF93DF9300D07E
:1034000000D000D0CDB7DEB726960FB6F894DEBF59
:103410000FBECDBFDF91CF9108951F93CF93DF9360
:10342000C091860216E0809187028C1304C0DF9160
:10343000CF911F910895D0E01C9FF0011D9FF00DCA
:103440001124E857FD4F408151816281738184814D
:1034500095810E94FD192196C770E5CF4091B80271
:103460005091B9026091BA027091BB028091BC0286
:103470009091BD020C94FD191F93CF93DF9380911F
:10348000BD02807FD1F48091BA028823B1F080918F
:103490008602D0918702B091B802C091B9024091E2
:1034A000BB025091BC02A1E0BF3F09F0A0E0BA010D
:1034B0006095709516E0D81304C0DF91CF911F91ED
:1034C000089521E04115510521F02A2FCF3F09F041
:1034D00020E090E020FD38C0189FF001199FF00D0A
:1034E0001124E857FD4F21812C132EC020812B136E
:1034F0002BC02281211128C0238134812417350754
:1035000000F1241B350B283C3105F0F42091BD025D
:103510002F7020612093BD0226E0289FF001299F93
:10352000F00D1124E357FD4F80818F7080618083FF
:1035300088EB92E00E947619DF91CF911F910C9455
:103540000D1A260F371FDFCF01968770B4CFAF92C9
:10355000BF92CF92DF92EF92FF920F931F93CF9380
:10356000DF93CDB7DEB761970FB6F894DEBF0FBE1D
:10357000CDBF8C0185E0F801DE011D9601900D9212
:103580008A95E1F7D8014C9111965C9111971296AA
:10359000EC903091B8026091B9028091BB02909199
:1035A000BC0221E0009731F06F3F19F421E03F3F6A
:1035B00009F020E0B22FB170BB2E20FD80C1F801D0
:1035C000C380D480A090BA02AA2009F427C1C816EB
:1035D000D906D0F1D601A81BB90BCD01FF24F39475
:1035E000883C910508F0F12C8091BD02982F907FC6
:1035F000FF2009F4CAC0911187C0FE2C651329C0B1
:10360000341327C0E11025C08F7080618093BD0204
:103610000E942E1A88EB92E00E9476198091BD02DA
:10362000F80185838F2D61960FB6F894DEBF0FBE2B
:10363000CDBFDF91CF911F910F91FF90EF90DF9061
:10364000CF90BF90AF900895809590958C0D9D1D63
:10365000C5CF81E0CD2831F05F3F19F481E04F3FC5
:1036600009F080E080FD24C081E08E25F82FF17004
:10367000DF2E80FF3FC0809186022091870236E0D6
:10368000821318C04D875E878D859E850E94361FE8
:10369000292F22952F70223008F1243030F59F70A9
:1036A00009F1D80115969C91907FE1F4FB2CBACFDB
:1036B00080E0DCCF90E0389FF001399FF00D1124BD
:1036C000E857FD4F6181561306C06081461303C061
:1036D00062816E110FC001968770D2CF9F7011F07A
:1036E000882321F3805E883008F3C8010E94761990
:1036F000BD2CDCCFEE2009F495CF8091BD02816016
:103700008093BD02F12C8ECF651312C0341310C00C
:10371000E1100EC0F8018583C8010E94761986E089
:10372000F801A8EBB2E001900D928A95E1F741C053
:103730004D875E878D859E850E94BF19882309F479
:10374000C8C0EE2009F4C5C08091BD02803270F07F
:103750002091B8023091B90238872F831986DB8611
:10376000CA868C87CE0107960E94761986E0F801FA
:10377000A8EBB2E001900D928A95E1F70E943C1A05
:103780000E942E1AFF24F3944DCF911115C07C2D69
:10379000D98AC88A6E2D89890E94EE1988EB92E039
:1037A0000E94761986E0E8EBF2E0DF011D928A952F
:1037B000E9F70E942E1A36CF651312C0341310C0D9
:1037C000E1100EC0F8018583C8010E947619E8EB6C
:1037D000F2E086E0DF011D928A95E9F7FA2C22CF0C
:1037E0004D875E878D859E850E94BF19882309F4C9
:1037F00070C0EE2009F46DC08091BD02803208F4E3
:10380000B5CF2091B8023091B9023A8329831B8247
:10381000DD82CC828E83CE010196A6CFC816D90652
:1038200038F1F601E81BF90BCF01F12C883C91052A
:1038300008F03DC0FE2CEE2009F44BC0651326C0F5
:10384000341324C08091BD0280FD17C0982F907F53
:10385000A1F0D80115968C931597903F09F45CCF91
:10386000982F907F905F8F70892B15968C9354CFF3
:10387000809590958C0D9D1DD8CF86E0F801A8EB22
:10388000B2E001900D928A95E1F7CCCE4D875E872C
:103890008D859E850E94BF19811168CF8091BD02E0
:1038A00081608093BD02C8010E947619BBCE7C2D39
:1038B000D98AC88A6E2D89890E94EE1973CFEE20AD
:1038C00041F04D875E878D859E850E94BF198111CD
:1038D0004DCFC8010E94761955CF1F93CF93DF9328
:1038E000CDB7DEB72C970FB6F894DEBF0FBECDBFB5
:1038F0004F83588769877A878B879C87CE01079685
:103900000E94A71A882309F442C09F8188852A85CE
:103910003B85232B39F08F3F19F481E09F3F19F04D
:1039200080E001C081E080FD08C04F815885698535
:103930007A858B859C850E94FD1916E08091860210
:1039400090918702891709F467C0819FC0011124F3
:1039500088579D4F0E94A71A882309F45DC0E09103
:1039600086021E9FF0011124E857FD4F40815181CE
:1039700062817381848195810E94FD198091860204
:1039800090E001968770992780938602D7CF86E0D2
:10399000FE013796DE01119601900D928A95E1F7AE
:1039A0009F8188852A853B85232B39F08F3F19F429
:1039B00081E09F3F19F080E001C081E080FDBDCF34
:1039C0002091870230E0C9010196877099274091C4
:1039D00086024817190699F096E0929FD001939FAE
:1039E000B00D1124A857BD4FFE01319601900D92E4
:1039F0009A95E1F7809387020E940D1A9ECF0E944C
:103A0000BB19109287021092860286E0E8EBF2E082
:103A1000DF011D928A95E9F72C960FB6F894DEBF68
:103A20000FBECDBFDF91CF911F910895EF92FF920E
:103A30000F931F93CF93DF938C01892B81F0F12C8F
:103A4000EE24E394E8012196F8018491843770F420
:103A5000843008F05FC08130B1F08230A1F1DF9195
:103A6000CF911F910F91FF90EF900895853709F442
:103A70004CC008F43DC09CE7980F903780F78F77D3
:103A80000E946D1649C00E5F1F4FFE01849190E2A7
:103A9000980F983060F48770FE2D01C0FF0F8A9553
:103AA000EAF78F2F0E9400200E94A81F02C00E94E8
:103AB00091158F2D815030F2EFE9FFE03197F1F74A
:103AC00000C00000F7CF0E5F1F4FFE01849190E20F
:103AD000980F983050F48770FE2D01C0FF0F8A9523
:103AE000EAF78F2F0E940620DFCF0E946D16E1CFEC
:103AF0000E5F1F4FFE01C491C150D8F28FE99FE0C5
:103B00000197F1F700C00000F7CF0E5F1F4FFE01D5
:103B1000F490CFCF0E9491158E01CBCF08950E94D3
:103B20008E1D6093F9027093FA028093FB029093CA
:103B3000FC020C94A71908950C948F1D0F931F93EA
:103B40000091F9021091FA022091FB023091FC02DF
:103B5000602B712B822B932B1F910F910C948F1D37
:103B60000F931F930091F9021091FA022091FB022A
:103B70003091FC0260237123822393231F910F91C4
:103B80000C948F1D0F931F930091F9021091FA026C
:103B90002091FB023091FC02602771278227932736
:103BA0001F910F910C948F1D0C948E1D0E94D41D9B
:103BB0006093F5027093F6028093F7029093F802F7
:103BC0000C94A71960E070E0CB010C94D61D0F9304
:103BD0001F9341E050E060E070E08A019B0104C067
:103BE000000F111F221F331F8A95D2F7C901B80198
:103BF0001F910F910C94D61D0F931F9341E050E03D
:103C000060E070E004C0440F551F661F771F8A955F
:103C1000D2F78091F5029091F602A091F702B0914F
:103C2000F8028A019B01082B192B2A2B3B2BC90177
:103C3000B8011F910F910C94D61D0F931F9341E073
:103C400050E060E070E004C0440F551F661F771F0E
:103C50008A95D2F7CB01BA016095709580959095C1
:103C60000091F5021091F6022091F7023091F802CE
:103C700060237123822393231F910F910C94D61DEF
:103C80000F931F9341E050E060E070E004C0440FE8
:103C9000551F661F771F8A95D2F78091F502909184
:103CA000F602A091F702B091F8028A019B01082761
:103CB00019272A273B27C901B8011F910F910C949E
:103CC000D61D0F931F930091F5021091F6022091DB
:103CD000F7023091F802602B712B822B932B1F91EE
:103CE0000F910C94D61D0F931F930091F502109124
:103CF000F6022091F7023091F802602371238223AB
:103D000093231F910F910C94D61D0F931F93009135
:103D1000F5021091F6022091F7023091F802602727
:103D20007127822793271F910F910C94D61D089518
:103D3000292F220F920F990F890F982F977071E0FA
:103D400001C0770F9A95EAF786958695869525E0C6
:103D5000829FC001112450E040E0A62FB0E0FC019A
:103D6000E40FF51FE254FD4F60819D01042E02C057
:103D7000369527950A94E2F7217021952627272367
:103D8000262720834F5F5F4F4530510541F7089547
:103D9000292F220F290F220F820F982F97708695B7
:103DA0008695869545E0849F9001112470E060E03F
:103DB00080E0F901E60FF71FE254FD4F408150E02B
:103DC000092E02C0569547950A94E2F7417055278F
:103DD000062E01C0440F0A94EAF7842B6F5F7F4FD1
:103DE0006530710531F70895BF92CF92DF92EF925F
:103DF000FF920F931F93CF93DF938C01C090F50236
:103E0000D090F602E090F702F090F8028091F9026B
:103E10009091FA02A091FB02B091FC02C82AD92A23
:103E2000EA2AFB2ACFE1D0E0BC2ED701C6010C2E36
:103E300004C0B695A795979587950A94D2F780FD0B
:103E40000EC0219788F7B12C8B2DDF91CF911F9158
:103E50000F91FF90EF90DF90CF90BF900895B80141
:103E60008C2F0E944D09019761F3EECFCF93DF9322
:103E7000EC010E94F41EBE01DF91CF910C944D091C
:103E80001F93CF93DF93EB0190918402992331F03C
:103E9000CB01DF91CF911F910C94361F882379F0CD
:103EA000CB010E94F41E182F682FCE010E94981E8D
:103EB000BE01812FDF91CF911F910C944D09CB0151
:103EC0000E94C81E182FF4CF682F80910201909194
:103ED00003010C94FE20682F809102019091030150
:103EE0000C94092180910201909103010C941421FA
:103EF0008091FD0285958595859508958091FD02B7
:103F00008770089598E0899F90011124622B609337
:103F1000FD020C94FC1D9091FD02809589238093F5
:103F2000FD02282F277061F4282F082E000C330B78
:103F30009217130629F08595859585950C941D1E7D
:103F400008959091FD02977081E009F480E0089552
:103F5000E0910201F0910301809121038083E091BF
:103F60000201F0910301808190912003892B8083CD
:103F7000E0910201F0910301808190911F03892B50
:103F800080839091FE02992381F0E0910201F091EB
:103F900003018081892B808380910201909103012C
:103FA0000E94A12081111092FE0280910201909145
:103FB00003010C9429148091210308959091210309
:103FC000892B809321030895982F90958091210348
:103FD00089238093210308951092210308959091DD
:103FE0002003892B809320030895982F909580912A
:103FF00020038923809320030895109220030895BD
:1040000090911F03892B80931F030895982F9095FB
:1040100080911F03892380931F03089510921F032B
:1040200008958093FE0208951092FE020895CF92A3
:10403000DF92EF92FF926C01EE24FF2420E0C11486
:10404000D104E104F10419F0C701B60120E1C72E43
:10405000D82EE92EFF24C114D104E104F10419F093
:10406000285FC701B6016B017C0154E0F694E79428
:10407000D794C7945A95D1F7C114D104E104F1043F
:1040800019F02C5FC701B6016B017C0142E0F69488
:10409000E794D794C7944A95D1F7C114D104E104A9
:1040A000F10419F02E5FC701B601969587957795B3
:1040B0006795672B682B692B09F02F5F822FFF9084
:1040C000EF90DF90CF9008956DEE7EEF90E080E06E
:1040D0000E94FE2C60E082E090E00E94E02C60E014
:1040E00083E090E00E94E02C60E084E090E00E9499
:1040F000E02C60E085E090E00E94E02C40E050E0A1
:10410000BA0188E090E00C94F22C90E080E00E94EC
:10411000DA2C21E08D3E9E4F09F020E0822F089599
:1041200082E090E00C94CC2C83E090E00C94CC2CBA
:1041300084E090E00C94CC2C682F84E090E00C9408
:10414000E02CFC0131969C01205E3F4F80E0919174
:1041500091118F5FE217F307D1F708959C01FC01DD
:1041600032969FEF80E04191461751F09F3F19F43E
:10417000411101C0982F8F5F8E31A9F79F3F09F43D
:104180000895290F311D97FD3A95F901628308952D
:10419000FC01329680962191261303C0DF0111970E
:1041A0001C92E817F907B9F70895E62FE695E6950A
:1041B000E695EF3169F0E80FF92FF11D677021E006
:1041C00030E001C0220F6A95EAF78181822B81835A
:1041D0000895E62FE695E695E695EF3171F0E80F44
:1041E000F92FF11D677021E030E001C0220F6A95C0
:1041F000EAF72095818128232183089520911301D6
:10420000222329F020919C0327FD0C94D5200C94A7
:10421000AE2020911301222329F020919C0327FD39
:104220000C94E9200C94C820FC01319680961192E0
:10423000E817F907E1F708958091A203843039F176
:104240001092230388E190E020E40FB6F894A8953B
:10425000809360000FBE2093600080E00E942E09D2
:1042600083B7817F846083BF83B7816083BF789485
:10427000889583B78E7F83BF0FB6F894A8958091F9
:104280006000886180936000109260000FBE089506
:104290000895CF930E941D050E946A050E9448213F
:1042A000C0E08C2F0E944306811105C0CF5FCE3045
:1042B000C1F7CF91089581E0FCCF0E94BB190E9405
:1042C0001D140C942E091F920F920FB60F921124F9
:1042D0008F939F93AF93BF9380912303811113C05A
:1042E0008091980390919903A0919A03B0919B03B8
:1042F0004196A11DB11D8093980390939903A093BB
:104300009A03B0939B03BF91AF919F918F910F90B0
:104310000FBE0F901F90189582E084BD93E095BD6D
:104320009AEF97BD80936E0008952FB7F89480910F
:10433000980390919903A0919A03B0919B032FBF8A
:104340000895CF92DF92EF92FF920F931F932FB7B2
:10435000F894409198035091990360919A03709159
:104360009B032FBF6A017B01EE24FF248C0130E008
:1043700020E0C016D106E206F30650F0481B590BA8
:10438000CA011F910F91FF90EF90DF90CF90089599
:1043900041505109F3CF78941F920F920FB60F92AC
:1043A00011248F939F93AF93BF9380919803909123
:1043B0009903A0919A03B0919B030196A11DB11D91
:1043C0008093980390939903A0939A03B0939B03CF
:1043D000BF91AF919F918F910F900FBE0F901F9043
:1043E00018950E946B28F8942FEF87EA91E62150E8
:1043F00080409040E1F700C0000087E090EBDC01D6
:104400008093AB039093AC03A093AD03B093AE0342
:1044100088E19CE00FB6F894A895809360000FBEE9
:1044200090936000FFCF0E948520811102C00E94FE
:1044300064200E949020809322030E94982090E0A4
:1044400090939D0380939C030E949420682F70E0BA
:1044500090E080E00C949C1D8091270380FF12C0A7
:104460006091070185E0689FB001112475956795FB
:104470007595679560387105A8F561157105A1F10D
:10448000862F089581FF09C06091070185E0689F2C
:10449000B001112475956795EDCF82FF07C060913B
:1044A000070185E0689FB0011124E4CF2091280323
:1044B0002223A9F0909106016091070185E0689F91
:1044C000B00111242917B0F6269FA001279F500D97
:1044D0001124692F70E0CA010E94B22CCBCF65E095
:1044E00070E0CECF8FE7089581E008958091270393
:1044F00080FF0CC06091050170E07595679575951A
:1045000067956115710549F1862F089581FF06C0F1
:104510006091050170E075956795F3CF6091050195
:1045200082FD0BC0909128039923A1F060910401B2
:1045300080910501961738F0682F70E0603871059A
:1045400000F38FE70895899FC001112470E00E9455
:10455000B22CF4CF61E070E0D7CF81E00895803FC6
:1045600031F40E942C22819580932B030895813F82
:1045700019F40E942C22F8CF823F31F40E942C22A1
:10458000819580932A030895833F19F40E942C2279
:10459000F8CF893F29F40E94762280932C03089556
:1045A0008A3F21F40E9476228195F7CF8B3F31F428
:1045B0000E947622819580932D0308958C3F19F4F3
:1045C0000E947622F8CF843F31F4809129038160E4
:1045D000809329030895853F21F480912903826007
:1045E000F7CF863F21F4809129038460F1CF873F84
:1045F00021F4809129038860EBCF883F21F48091DA
:1046000029038061E5CF8D3F31F4809127038160DC
:104610008093270308958E3F21F4809127038260C1
:10462000F7CF8F3FB9F7809127038460F1CF803FA8
:10463000C1F480912B0387FD10922B0380912A03F4
:1046400081110EC080912B0381110AC080912C032F
:10465000811106C080912D03811102C010922803A0
:104660000895813F29F480912B0318162CF3E6CF8F
:1046700090912A03823F29F497FFE0CF10922A03FA
:10468000DDCF833F19F41916CCF3D8CF893F39F425
:1046900080912C03181694F610922C03CFCF8A3FEA
:1046A00029F480912C0387FFC9CFF6CF8B3F39F4D3
:1046B00080912D0387FFC2CF10922D03BFCF8C3F77
:1046C00029F480912D031816BCF3B8CF843F31F440
:1046D000809129038E7F80932903B0CF853F21F4F9
:1046E000809129038D7FF7CF863F21F480912903A4
:1046F0008B7FF1CF873F21F480912903877FEBCF18
:10470000883F21F4809129038F7EE5CF8D3F31F4DE
:10471000809127038E7F8093270390CF8E3F21F4D3
:10472000809127038D7FF7CF8F3F09F087CF80914E
:1047300027038B7FF0CF89E293E00E9434140E941C
:104740009521909325038093240308951F93CF937D
:10475000DF9380912403909125030E94A121AC0155
:10476000909128032091080130E0911106C020911A
:1047700026038AE0289F900111244217530780F0F6
:1047800080912A03C0912B0310912C03D0912D030B
:1047900081110AC0C11178C0111176C0D11174C045
:1047A000DF91CF911F9108959F3F19F09F5F9093E4
:1047B0002803181624F40E942C2280932A03809147
:1047C0002A0387FF05C00E942C22819580932A032B
:1047D0001C1624F40E942C2280932B0380912B031F
:1047E00087FF05C00E942C22819580932B03609146
:1047F0002A03662331F1C0912B03CC2311F1062E3D
:10480000000C770B880B990B0E94A52B23E333E355
:1048100043E35FE30E94092C0E946D2B60932A03FF
:104820006C2FCC0F770B880B990B0E94A52B23E3E1
:1048300033E343E35FE30E94092C0E946D2B6093F6
:104840002B03111624F40E94762280932C0380916E
:104850002C0387FF05C00E947622819580932C034C
:104860001D1624F40E94762280932D0380912D033F
:1048700087FF05C00E947622819580932D03DF91EA
:10488000CF911F910C949B239F3F09F08FCFA0CF16
:1048900085E0E9E2F3E0DF011D928A95E9F71092E5
:1048A000280310922703089580914E0308950F93D3
:1048B0001F93CF93DF9300D01F92CDB7DEB78C014B
:1048C0000E94BE26823011F0843019F583E089837E
:1048D0001B830A838093E9008FEF9091E800815059
:1048E00095FD06C095ED9A95F1F700008111F5CF81
:1048F0008091E80085FF0DC050E040E063E070E08B
:10490000CE0101960E94DB268091E8008E7780938D
:10491000E8000F900F900F90DF91CF911F910F91B2
:104920000895CF93DF9300D01F92CDB7DEB72091CB
:10493000A203243031F522E02983805891099B831A
:104940008A8383E08093E9008FEF9091E8008150A3
:1049500095FD06C095ED9A95F1F700008111F5CF10
:104960008091E80085FF0DC050E040E063E070E01A
:10497000CE0101960E94DB268091E8008E7780931D
:10498000E8000F900F900F90DF91CF910895CF9393
:10499000DF93EC010E94BE26823011F08430F9F4DE
:1049A00082E08093E9008FEF9091E800815095FDBF
:1049B00006C095ED9A95F1F700008111F5CF809131
:1049C000E80085FF0CC050E040E065E070E0CE01FB
:1049D0000E94DB268091E8008E778093E800DF91CB
:1049E000CF910895CF93DF93EC010E94BE268230D1
:1049F00011F08430F9F4809113018823F1F0809153
:104A00009C0387FF1AC084E08093E9008FEF9091A8
:104A1000E800815095FD06C095E19A95F1F70000F8
:104A20008111F5CF8091E80050E040E060E270E055
:104A300085FD1AC0DF91CF91089581E08093E90050
:104A40008FEF9091E800815095FD06C095ED9A9505
:104A5000F1F700008111F5CF8091E80085FFEACFE2
:104A600050E040E068E070E0CE010E94DB268091DB
:104A7000E8008E778093E80080E2FE01AEE2B3E0CA
:104A800001900D928A95E1F7D5CF8091A103811114
:104A900009C00E946B280E94C8288091E2008460AF
:104AA0008093E20008951092A10308950895089557
:104AB0000C945D2142E061EC81E00E94E92742E034
:104AC00061EC82E00E94E92742E061EC83E00E9411
:104AD000E92742E261EC84E00C94E9278091A40389
:104AE000833009F455C030F4813071F1823009F41B
:104AF00091C008958A3009F47DC08B3009F463C0F9
:104B0000893009F044C08091A303813209F03FC08D
:104B10008091A7039091A803009711F00397B9F52E
:104B20008091E800877F8093E8008091E80082FF11
:104B30002AC08091F10080934E038091E8008B772A
:104B40008093E8000C941D288091A303813AF9F426
:104B50008091E800877F8093E8008091A70390917F
:104B6000A803892B61F460E28EE293E070E00E947A
:104B70002A278091E8008B778093E800089560E011
:104B800090E080E0F3CF8091A2038111CECF089511
:104B90008091A303813AD9F78091A7039091A8034C
:104BA000892BA9F78091E800877F8093E8008091A6
:104BB000E80080FFFCCF809113018093F100809189
:104BC000E8008E77BDCF8091A303813201F78091F9
:104BD000A7039091A803892BD1F68091E800877FE5
:104BE0008093E8000E941D288091A5038093130103
:104BF0000C94BB198091A303813249F68091E8009F
:104C0000877F8093E8000E941D288091A6038093EF
:104C10004F0308958091A303813A09F0B8CF8091A2
:104C2000E800877F8093E8008091E80080FFFCCF58
:104C300080914F03C2CF84B7877F84BF0FB6F894AB
:104C4000A895809160008861809360001092600058
:104C50000FBE80E880936100109261000E946C1486
:104C60000E946B280E94C8288091E2008460809393
:104C7000E20078940E94512B0E946E1489E091E02A
:104C80000E9418148091A203853029F00E947614A6
:104C90000E94E113F7CF0E941C218091A00388237A
:104CA00089F30E944921882369F30E94C526EACF2F
:104CB000292F33272330310579F158F4213031057C
:104CC000F1F02230310519F190E080E030E020E091
:104CD0001AC02132310599F122323105A9F7643029
:104CE000710590F7FB01EE0FFF1FE054FE4F20818E
:104CF000318164547E4FFB01808190E004C082E1E9
:104D000090E02EE637E0FA013183208308958DE6A6
:104D100090E021E037E0F7CF99278130910561F0ED
:104D200028F0029789F6EDECF6E002C0EDEFF6E030
:104D3000849190E09F01E7CFE5EEF6E0F9CF643093
:104D4000710508F0C1CF660F771FFB01E853FE4FD6
:104D50002081318189E090E0D6CF0895CF93C82F8C
:104D60000E94AD26C0935003CF9108958091A20375
:104D7000843011F081E0089582E00895809150031D
:104D8000811102C00C94B626089580E189BD82E1AC
:104D900089BD09B400FEFDCF8091D8008F7D80933E
:104DA000D8008091E00082608093E0008091E00074
:104DB00081FDFCCF0895AF92BF92CF92DF92FF9218
:104DC0000F931F93CF93DF936C01EB018A010E9435
:104DD0003C28F82E811123C00115110539F0F80186
:104DE00080819181C81BD90BC80ED91EB12CA12C72
:104DF0002097A9F08091E80085FD22C08091E8000D
:104E00008E778093E80001151105A1F0F8018081EB
:104E10009181A80EB91EB182A08285E0F82E8F2D57
:104E2000DF91CF911F910F91FF90DF90CF90BF90B6
:104E3000AF9008950E943C288823D1F2F82EEFCF3E
:104E4000F60181916F018093F1002197FFEFAF1A76
:104E5000BF0ACECFFC018091A9039091AA038617C7
:104E60009707A0F06115710529F49091E8009E77ED
:104E70009093E80090E06115710551F4911108C01C
:104E80008091E80082FF35C080E00895BC01F2CF38
:104E90008091A2038823C9F18530C9F18091E8008F
:104EA00083FD31C08091E80082FDEACF8091E80067
:104EB00080FFE1CF2091F3008091F200322F282F64
:104EC0006115710519F02830310558F091E028304E
:104ED000310509F090E02091E8002E772093E8005A
:104EE000CACF81918093F100615071092F5F3F4FCC
:104EF000E7CF8091A203882341F0853041F0809173
:104F0000E80083FFBDCF81E0089582E0089583E04B
:104F10000895FC018091A9039091AA038617970731
:104F2000A0F06115710529F48091E8008E778093D7
:104F3000E80090E06115710551F4911108C080916D
:104F4000E80082FF36C080E00895BC01F2CF809176
:104F5000A2038823D1F18530D1F18091E80083FD4F
:104F600032C08091E80082FDEACF8091E80080FFA6
:104F7000E1CF2091F3008091F200322F282F6115AC
:104F8000710519F02830310558F091E028303105CD
:104F900009F090E08091E8008E778093E800CACF16
:104FA00084918093F1003196615071092F5F3F4FDA
:104FB000E6CF8091A203882341F0853041F08091B3
:104FC000E80083FFBCCF81E0089582E0089583E08C
:104FD0000895982F973028F08F708093E90081E032
:104FE00008959093E900242F762F50E0981731F020
:104FF0007091EC002091ED005091F00021FD02C075
:105000009F5FE8CF3091EB003E7F3093EB00309113
:10501000ED003D7F3093ED003091EB003160309337
:10502000EB007093EC002093ED005093F000209182
:10503000EE0027FDE5CF80E008958091A30387FF70
:1050400013C08091E80082FF06C08091E8008B7752
:105050008093E80004C08091A2038111F2CF0895EB
:105060008091A2038823D9F38091E80080FFF8CFD4
:105070008091E8008E77ECCF2091E4003091E5003C
:1050800085E69091EC0090FF06C09091E80090FFBB
:1050900006C080E008959091E80092FDFACF9091CB
:1050A000A203992391F0953091F09091EB0095FD3A
:1050B00010C04091E4005091E5002417350709F332
:1050C00081509A01F1F684E0089582E0089583E02A
:1050D000089581E008950E94D9280E94E128E0EE19
:1050E000F0E0808181608083E8EDF0E080818F775F
:1050F000808319BCA7EDB0E08C918E7F8C9380816A
:105100008F7E80831092A10308950F931F93CF93F6
:10511000DF930E94D9280E94E128C8EDD0E0888161
:105120008F77888388818068888388818F7D888352
:1051300019BC1092A20310929E031092A003109229
:105140009F0300EE10E0F80180818B7F80838881CF
:105150008160888342E060E080E00E94E927E1EE20
:10516000F0E080818E7F8083E2EEF0E080818160DC
:105170008083808188608083F80180818E7F808336
:10518000888180618883DF91CF911F910F9108956D
:10519000E8EDF0E080818F7E8083E7EDF0E08081B4
:1051A0008160808384E082BF81E08093A1030C94BE
:1051B0008528E8EDF0E080818E7F80831092E20008
:1051C00008951092DA001092E10008951F920F9254
:1051D0000FB60F9211242F933F934F935F936F93CA
:1051E0007F938F939F93AF93BF93EF93FF938091A0
:1051F000E10082FF0BC08091E20082FF07C0809136
:10520000E1008B7F8093E1000E94502B8091DA00B7
:1052100080FF19C08091D80080FF15C08091DA000E
:105220008E7F8093DA008091D90080FF94C080E166
:1052300089BD82E189BD09B400FEFDCF81E0809384
:10524000A2030E9445258091E10080FF19C0809152
:10525000E20080FF15C08091E2008E7F8093E20023
:105260008091E20080618093E2008091D8008062AA
:105270008093D80019BC85E08093A2030E94572533
:105280008091E10084FF29C08091E20084FF25C065
:1052900080E189BD82E189BD09B400FEFDCF809126
:1052A000D8008F7D8093D8008091E1008F7E80931D
:1052B000E1008091E2008F7E8093E2008091E20025
:1052C00081608093E20080919E03882309F449C0A5
:1052D00084E08093A2030E9458258091E10083FF1F
:1052E00029C08091E20083FF25C08091E100877F83
:1052F0008093E10082E08093A20310929E0380914C
:10530000E1008E7F8093E1008091E2008E7F8093A8
:10531000E2008091E20080618093E20042E060E080
:1053200080E00E94E9278091F00088608093F0007F
:105330000E945625FF91EF91BF91AF919F918F9160
:105340007F916F915F914F913F912F910F900FBE81
:105350000F901F90189519BC1092A2030E9453251C
:1053600072CF8091E30087FD02C081E0B2CF83E07D
:10537000B0CF1F920F920FB60F9211242F933F932D
:105380004F935F936F937F938F939F93AF93BF934D
:10539000CF93EF93FF93C091E900CF708091EC0021
:1053A0001092E9008091F000877F8093F00078945C
:1053B0000E94F5291092E9008091F00088608093A6
:1053C000F000C093E900FF91EF91CF91BF91AF91B1
:1053D0009F918F917F916F915F914F913F912F910D
:1053E0000F900FBE0F901F9018951F93CF93DF93D0
:1053F000CDB7DEB7AA970FB6F894DEBF0FBECDBF0C
:10540000E3EAF3E08091F100819323E0EB3AF207C5
:10541000C9F70E946E258091E80083FF44C0809107
:10542000A3039091A4039A3008F03DC0E92FF0E067
:10543000E45EF54D0C94C62C262A4C2A532A4C2A9D
:10544000532AAA2ACC2A532A232B302B803889F0BE
:10545000823849F58091A7038F70873020F58093BB
:10546000E9008091EB0085FB882780F91092E90024
:1054700006C080919F039091A0039111826090914A
:10548000E800977F9093E8008093F1001092F1007C
:105490008091E8008E772DC0282F2D7F21F488235E
:1054A000D1F0823059F18091E80083FF0AC08091E9
:1054B000E800877F8093E8008091EB008062809312
:1054C000EB00AA960FB6F894DEBF0FBECDBFDF91FA
:1054D000CF911F9108958091A503813021F79330DA
:1054E00009F080E08093A0031092E9008091E80029
:1054F000877F8093E8000E941D28D5CF8091A50367
:105500008111F2CF8091A7038F702FEF280F2630E3
:1055100050F68093E9002091EB0020FFE5CF933017
:1055200031F48091EB0080628093EB00DDCF9091AD
:10553000EB0090619093EB0021E030E001C0220F7E
:105540008A95EAF72093EA001092EA008091EB0036
:105550008860EACF8111A7CF1091A5031F778091B2
:10556000E3008078812B8093E3008091E800877FBF
:105570008093E8000E941D288091E80080FFFCCF06
:105580008091E30080688093E30083E0111101C003
:1055900082E08093A20387CF8058823008F083CFC7
:1055A0008091A5039091A6038C3D23E09207A1F57D
:1055B00083E08A838AE289834FB7F894DE011396E9
:1055C00020E03EE051E2E32FF0E050935700E491F9
:1055D00020FF03C0E295EF703F5FEF708E2F90E0E9
:1055E000EA30C0F0C7968D939D932F5F243159F711
:1055F0004FBF8091E800877F8093E8006AE270E007
:10560000CE0101960E942A278091E8008B77809333
:10561000E80049CFC096E7CF6091A7037091A80337
:10562000AE014F5F5F4F0E945826BC01892B09F4E1
:105630003ACF9091E800977F9093E80089819A8112
:105640000E948927E1CF803809F02DCF8091E800B2
:10565000877F8093E80080919E038093F10018CFAC
:10566000811121CF9091A503923008F01CCF809139
:10567000E800877F8093E80090939E030E941D2896
:1056800080919E03882331F084E08093A2030E94DE
:105690005A2509CF8091E30087FDF6CF81E0F5CF51
:1056A0000895CF938091A203882399F0C091E900D7
:1056B000CF708091EC0080FD0EC080E0C82B10926E
:1056C000E9008091E80083FD0E94F529CF70C09326
:1056D000E900CF91089580E8F1CF0E94742B68947F
:1056E000B1110C94032C08950E94E82B88F09F5769
:1056F00098F0B92F9927B751B0F0E1F0660F771FF6
:10570000881F991F1AF0BA95C9F714C0B13091F0EB
:105710000E94022CB1E008950C94022C672F782F80
:105720008827B85F39F0B93FCCF3869577956795B0
:10573000B395D9F73EF490958095709561957F4F1C
:105740008F4F9F4F0895E89409C097FB3EF49095C2
:105750008095709561957F4F8F4F9F4F9923A9F04A
:10576000F92F96E9BB279395F695879577956795D9
:10577000B795F111F8CFFAF4BB0F11F460FF1BC01D
:105780006F5F7F4F8F4F9F4F16C0882311F096E9B0
:1057900011C0772321F09EE8872F762F05C066235E
:1057A00071F096E8862F70E060E02AF09A95660F17
:1057B000771F881FDAF7880F9695879597F90895D0
:1057C00057FD9058440F551F59F05F3F71F04795B2
:1057D000880F97FB991F61F09F3F79F08795089597
:1057E000121613061406551FF2CF4695F1DF08C0B6
:1057F000161617061806991FF1CF869571056105D3
:1058000008940895E894BB2766277727CB0197F97A
:1058100008950E941C2C0C948D2C0E947F2C38F033
:105820000E94862C20F0952311F00C94762C0C9479
:105830007C2C11240C94032C0E94E02B70F3959F78
:10584000C1F3950F50E0551F629FF001729FBB2777
:10585000F00DB11D639FAA27F00DB11DAA1F649F13
:105860006627B00DA11D661F829F2227B00DA11DC6
:10587000621F739FB00DA11D621F839FA00D611D4C
:10588000221F749F3327A00D611D231F849F600D6D
:10589000211D822F762F6A2F11249F5750409AF096
:1058A000F1F088234AF0EE0FFF1FBB1F661F771F22
:1058B000881F91505040A9F79E3F510580F00C94ED
:1058C000762C0C94032C5F3FE4F3983ED4F386953A
:1058D00077956795B795F795E7959F5FC1F7FE2B8D
:1058E000880F911D9695879597F9089597F99F6769
:1058F00080E870E060E008959FEF80EC0895002458
:105900000A941616170618060906089500240A9424
:1059100012161306140605060895092E0394000CAA
:1059200011F4882352F0BB0F40F4BF2B11F460FF39
:1059300004C06F5F7F4F8F4F9F4F0895AA1BBB1B03
:1059400051E107C0AA1FBB1FA617B70710F0A61B7F
:10595000B70B881F991F5A95A9F780959095BC01A0
:10596000CD01089597FB072E16F4009407D077FD1C
:1059700009D00E949E2C07FC05D03EF4909581959D
:105980009F4F0895709561957F4F0895EE0FFF1F0B
:105990000590F491E02D0994F999FECF92BD81BD57
:1059A000F89A992780B50895A6E1B0E044E050E068
:1059B0000C94062DA8E1B0E042E050E00C94062DD6
:1059C000262FF999FECF92BD81BDF89A019700B4B8
:1059D000021639F01FBA20BD0FB6F894FA9AF99A58
:1059E0000FBE08950396272F0E94E12C0E94E02C01
:1059F000252F0E94E12C242F0C94E12C0196272FB7
:105A00000E94E12C0C94E02CDC01CB01FC01F99903
:105A1000FECF06C0F2BDE1BDF89A319600B40D92FA
:0C5A200041505040B8F70895F894FFCFB3
:105A2C0020FFFF0228083C07145424F224C72491B9
:105A3C0024572401000D010D020D030D040D050D5D
:105A4C00000C010C020C030C040C050C000B010BDC
:105A5C00020B030B040B050B000A010A020A030AD2
:105A6C00040A050A000901090209030904090509C8
:105A7C0000080108020803080408050800070107CC
:105A8C0002070307040705070006010602060306C2
:105A9C0004060506000501050205030504050505B8
:105AAC0000040104020403040404050400030103BC
:105ABC0002030303040305030002010202020302B2
:105ACC0004020502000101010201030104010501A8
:105ADC00000001000200030004000500404D3639AF
:105AEC003C08EF07B907800713072C0745075E072B
:00000001FF

Plusieurs points ont mené à cette configuration :
– les touches de lettre/ponctuation sont symétriquement équilibrées (Ç et W à gauche) ;
– les touches modificatrices de composition (en bleu) sont placées en double sous les pouces pour laisser les quatre autres doigts libres ;
– les touches modificatrices de commande (en jaune) sont placées l’une sous l’auriculaire et l’autre sous le pouce pour laisser un maximum de liberté aux autres doigts, notamment en cas d’usage combiné ;
– le niveau 1 comprend les pavés directionnel et numérique ainsi que les raccourcis généraux courants, accessibles par une touche modificatrice verrou sous le pouce ;
– le niveau 2, un peu moins accessible, comprend les douze fonctions classiques, un pavé directionnel auxiliaire (sous la main droite, pour une utilisation vidéoludique sans la souris, contrairement au pavé principal), ainsi que les contrôles de la souris (dont je n’ai pas vraiment encore l’utilité) ;
– le niveau 3, peu accessible (seulement par une alternance des touches des niveaux 1 et 2), sert uniquement à reprogrammer le clavier et à gérer les diodes placées dessous.

Quelques remarques sur des éléments moins stabilisés :
– les quatre touches linguistiques (en violet), dont une qui surdéfinit la touche de menu par le système d’exploitation, peuvent avoir d’autres usages en dehors du japonais…
– les quatre touches directionnelles du bas ont été ajoutées récemment parce que j’avais ces places libres, j’ai tendance à les utiliser avec l’index après une petite rotation du poignet pour des tâches rapides sur un axe unique (sinon j’utilise le pavé complet au niveau 1), avec l’axe vertical à gauche près de la touche entrée supérieure pour la navigation dans l’historique du terminal, et l’axe horizontal près des touches de correction pour faciliter son positionnement ;
– la touche d’espace est à gauche uniquement parce que je crois que je ne l’utilise qu’avec le pouce gauche (sûrement à cause de l’usage vidéoludique combinant main gauche sur clavier et main droite sur souris) ; je ne sais pas si placer l’espace en double symétriquement sous les deux pouces (laissant ainsi uniquement l’entrée supérieure) peut valoir le coup…
– évidemment, il est toujours possible de permuter certaines touches modificatrices/linguistiques/de niveau…

Je demande donc vos avis, notamment sur ce qui pourrait être améliorable, sachant que je programme régulièrement (en Python, principalement, et souvent en français ; j’utilise d’ailleurs rarement la touche W), que j’écris souvent (la plupart du temps en français, parfois en anglais ou en japonais) et qu’il me faut un accès facile à des caractères spéciaux, notamment l’API (à configurer ultérieurement).

Voilà !

Dernière modification par Anyndel (3/10/2017 18:14:40)

Hors ligne

#305 14/8/2017 01:39:41

Flavien21
Admin
Lieu : Versailles
Inscription : 12/7/2015
Messages : 165
Site Web

Re : [sujet technique] Adapter le bépo à l’ergodox

Bonjour et bienvenue à toi (je n’ai pas eu l’occasion de te le dire dans ton topic dédié) !

Intéressant,

Perso ce qui me dérange le plus c’est le Ç à gauche, car souvent utilisé avec A et là ils sont sur le même doigt.
J’aime bien ta méthode pour passer en fn3 sans pour autant utiliser un espace supplémentaire.
Je remarque que tu utilises une version 1.1 légèrement modifié (déplacement du rayé sur J), j’ai du mal à me faire au ß comme terminateur pour le latin étendu, mais bon ça a été voté.

Comment fais-tu la bascule linguistique avec la touche app ? Quand je mets l’ordi (le Windows 7 du boulot, pas encore testé sur le 10 de mon ordi perso) en japonnais (pas IME, le full jap) ça reste bloqué en qwerty US, même pas le qwerty imprimé sur les claviers japs, impossible de taper des kanas, mais pas de soucis en passant par l’IME, sauf que c’était pas le but de mon test, ayant comme toi mappé une partie des touches des claviers JIS (mais sur lesquels j’ai quelque chose sur ma variante BÉPO/BÓPO).


bépoète depuis mars 2015

Hors ligne

#306 15/8/2017 00:06:50

Anyndel
Membres
Lieu : Lyon, Paris
Inscription : 10/8/2017
Messages : 4

Re : [sujet technique] Adapter le bépo à l’ergodox

Pour le Ç, c’est bien vrai, il faudrait voir avec quelle lettre de l’autre extrême je pourrais la permuter (W, Z ou M)…

Pour la légère modification, ce n’en est pas une, en fait, je me suis trompé d’une colonne en recopiant la disposition du site (car je me sers de cette image comme d’un aide-mémoire), au temps pour moi ! Comment peut-on modifier ses précédents messages ?

Pour la bascule, je ne peux pas répondre à tes questions parce que je suis sur Linux : j’utilise ibus avec anthy, ce qui me permet de saisir du japonais (avec tous les modes de saisie) en bépo en pouvant utiliser les quatre touches (finement configurables), lesquelles me servent par exemple actuellement à changer de langue, à changer de mode de saisie, à naviguer dans la liste des candidats du dictionnaire et à convertir cycliquement la sélection entre tous les types de caractère…

Hors ligne

#307 15/8/2017 14:23:48

Flavien21
Admin
Lieu : Versailles
Inscription : 12/7/2015
Messages : 165
Site Web

Re : [sujet technique] Adapter le bépo à l’ergodox

Ah, OK.
Sous macOS je n’ai pas le problème, mais je n’ai pas encore testé avec les touches linguistiques.
C’est donc un problème Windows de plus.

Pour pouvoir éditer un message il faut en avoir posté au minimum 5, c’est une mesure anti-spam. J’ai changé ton status et tu peux maintenant profiter pleinement du forum (modifier tes messages et mettre des liens).


bépoète depuis mars 2015

Hors ligne

#308 25/8/2017 11:43:42

zorglups
Membres
Inscription : 7/3/2010
Messages : 23

Re : [sujet technique] Adapter le bépo à l’ergodox

Bonjour,

Je suis utilisateur depuis plusieurs années d'un Ergodox.
J'ai mis dessus un firmware QMK que je trouve vraiment parfait et très complet.

Je me repenche sur la question Bépo et je suis un peu perplexe.

En effet. J'ai grandement customisé le layout de mon clavier mais c'est surtout pour les placements des touches de contrôle (Shift/Ctrl/Alt/AltGr/Espace/...).
La grande partie de la customisation se situe au niveau de mon Layer1 qui me permet tous les déplacements en tous sens, sélections de texte, Alt-tab facile, copy/cut/paste, F1-F12, Pavé Numérique, le tout sur un seul layer.
Si cela intéresse quelqu'un, je pourrais décrire cela (et donner le moyen d'y arriver) dans un fil séparé (vu qu'il n'est pas vraiment lié au Bépo).
Ce n'est pas vraiment le but de ce forum mais d'un autre coté, vous cherchez à rendre votre utilisation ergonomique et pouvoir faire un max (pas seulement écrire) sans trop bouger les mains rentre dans le débat.

Pour ce qui est des touches de "caractère", je suis, à peu de chose près, resté dans la disposition de base du clavier (sur le layer0).

Actuellement, mon PC Win10 est dans ses "regional settings" sur AZERTY.

Pour arriver aux dispositions documentées dans ce fil, travaillez-vous uniquement sur la partie soft de l'OS ou bien travaillez-vous au niveau du firmware du clavier?

Si vous travaillez au niveau du firmware du clavier, cela veut dire que quand vous vous retrouvez soudain sur une machine ayant comme regional settings AZERTY ou QWERTY (par exemple en faisant un Remote Desktop), vous êtes tout perdu, non?

Pouvez-vous éclairer ma lanterne?

Hors ligne

#309 25/8/2017 14:11:12

Mimoza
Olivaw
Lieu : Terre
Inscription : 19/9/2012
Messages : 872

Re : [sujet technique] Adapter le bépo à l’ergodox

Bonjour,
La personnalisation du clavier se fait uniquement coté firmware, si c'est du coté des pilotes on affiche ça comme un dérivé du Bépo.
Si on change les options linguistique du PC (Bépo => Azerty) on est nullement perdu, seulement ce sont les glyphes qui sont réarrangé (lettres, chiffres et autre caractère imprimable) et les touches mortes évidemment.
En ce qui concerne les accès a distance cela dépend fortement du logiciel. Par exemple avec Putty/OpenSSH il transfert les caractères et non les code de touches, par contre pour le logiciel de RDP par défaut sous Win il transmet les code touches, donc le caractère affiché dépend des options linguistique du système cible.

Ton agencement de clavier m'intéresse pour comprendre comment tu arrive a avoir autant de possibilité sur une seule couche.

Hors ligne

#310 25/8/2017 21:52:16

zorglups
Membres
Inscription : 7/3/2010
Messages : 23

Re : [sujet technique] Adapter le bépo à l’ergodox

J'ai bossé dans des putty/ssh pendant 13 ans... Que du bonheur.
Hélas, mon boulot actuel me force en grande majorité de me connecter sur des machines Windows et les moyens sont divers (RDP, TeamViewer, RAdmin, VNC, ...).

Actuellement:
- Les Regional Settings de mon Win10 sont "Français(Belgique)".
- Mon Ergodox a un layout "QWERTY".

Donc... Pour taper un "q", je presse la touche sous l'auriculaire gauche.
Mon Ergodox envoie le scancode KC_A.
Win10 interprète cela et
- inscrit un "q" dans ce formulaire.
- ou transmet le caractère "q" par Putty sur le host distant.
- les choses se corsent avec les connections distante vers host windows:
-- Parfois (TeamViewer), le host distant reçoit un "q".
-- Parfois (RDP), le host distant reste fidèles à ses regional settings (dans mon cas, presque toujours QWERTY) et interpête cela comme un "a".
-- Parfois, très bizarre, je me retrouve avec un mix QWERTY pour les caractères et AZERTY pour les symboles (je n'ai jamais bien compris ce cas).

Je pense que je vais:
- Repasser les regional settings de mon Win10 en QWERTY. Cela enlèvera déjà un niveau de "traduction" lors des connection remote "windows".
- Implémenter le Bépo (ou Béop ou autre) directement dans le clavier (en gardant précieusement mon layer0 actuel en backup).
En pressant l'auriculaire gauche, l'Ergodox enverra donc un KC_A qui sera traduit en "a" par Win10.

La difficulté vient que les différences ne se limitent pas à des déplacements des touches qwerty pour faire un bépo.
Si nous prenons le cas du "+" (en Majuscule en haut tout à droite, près du backspace),  comment faire pour que l'Ergodox envoie le scan de la touche "=" (du querty) mais avec le shift pour donc communiquer un "+" en querty ?
J'ai quelques idées mais voudrais laisser venir vos idées.

Le challenge étant que, par exemple, on ne peut pas aveuglément envoyer "Shift-down"-"="-"Shift-up" car je pourrais avoir déjà la touche shift enfoncée et qu'il faudrait donc ne pas faire le "shift-up".

Je suppose que ce que je viens de dire est incompréhensible ;-)

Je pense que je m'en vais de ce pas fouiller le forum pour trouver des exemples de keymap.c d'autres utilisateurs pour voir comment vous avez procédé.

Je promets de documenter mes deux layouts. J'ai mis des années à les mettre en place et je suis maintenant très satisfait.

Je dois les paufiner un peu pour mon futur probable passage vers un clavier Dactyl. Le changement majeur étant la perte des 6 touches verticales (et donc le déménagement des fonctions) mais en même temps une bien meilleure dispositions des touches pour le pouce et de la rangée du bas. Le bilan s'avère positif.

Hors ligne

#311 26/8/2017 10:07:10

Flavien21
Admin
Lieu : Versailles
Inscription : 12/7/2015
Messages : 165
Site Web

Re : [sujet technique] Adapter le bépo à l’ergodox

Bonjour,

Nos claviers sont également codés en QWERTY et ce sont les préférences linguisitques qui traduisent en BÉPO, aucun soucis quand on passe en QWERTY ou AZERTY, les rares lettres qui on étés déplacés correspondent à des caractères spéciaux sur ces deux layouts donc rarement utilisés.

Pour coder le BÉPO en dur dans le claviers en gardant le PC en QWERTY je ne pense pas que ce soit possible, ne serait-ce que pour les caractères accentués (avant même d’atteidre l’exemple que tu as mentionné).

Voici mon Keymap.c actuel qui corresponds à peu de choses près à l’image tout en haute de cette page.

#include "ergodox.h"
#include "debug.h"
#include "action_layer.h"
#include "version.h"


#include "keymap_german.h"

#include "keymap_nordic.h"

#define M_COPY   M(1)
#define M_EUR    M(2)
#define M_AHK    M(3)
#define M_USD    M(4)
#define M_CCED   M(5)
#define M_KANA   M(6)
#define AH_ABNT  KC_INT1
#define AH_ISO   KC_NUBS
#define AH_BOPO  KC_KANA
#define AH_ROYA  KC_INT4
#define AH_TREMA KC_INT3
#define AH_AHK   KC_INT5
bool rgbstatus = false;

enum custom_keycodes {
  PLACEHOLDER = SAFE_RANGE, // can always be here
  EPRM,
  VRSN,
  RGB_SLD,

};

const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {

  [0] = KEYMAP(KC_GRAVE,KC_1,KC_2,KC_3,KC_4,KC_5,KC_MINUS,
               KC_TAB,KC_Q,KC_W,KC_E,KC_R,KC_T,KC_RALT,
               KC_HOME,KC_A,KC_S,KC_D,KC_F,KC_G,
               KC_END,AH_ISO,KC_Z,KC_X,KC_C,KC_V,KC_LSHIFT,
               KC_LCTL,KC_LGUI,KC_UP,KC_DOWN,KC_B,
                                        KC_LALT,KC_ESCAPE,
                                                LCTL(KC_H),
                                    KC_SPACE,KC_DELETE,TT(1),

               KC_EQUAL,KC_6,KC_7,KC_8,KC_9,KC_0,KC_RBRACKET,
                KC_RALT,KC_Y,KC_U,KC_I,KC_O,KC_P,KC_LBRACKET,
               KC_H,KC_J,KC_K,KC_L,KC_SCOLON,KC_QUOTE,
               KC_RSHIFT,KC_N,KC_M,KC_COMMA,KC_DOT,KC_SLASH,KC_BSLASH,
                    AH_ABNT,KC_LEFT,KC_RIGHT,KC_RGUI,KC_RCTRL,
               KC_AUDIO_VOL_UP,KC_AUDIO_MUTE,
               KC_AUDIO_VOL_DOWN,
               TT(1),KC_BSPACE,KC_ENTER),

  [1] = KEYMAP(LCTL(LSFT(KC_ESCAPE)),KC_F1,KC_F2,KC_F3,KC_F4,KC_F5,KC_NO,
               KC_TAB,M_COPY,KC_UP,LCTL(KC_U),KC_NO,KC_NO,KC_CAPSLOCK,
               KC_PGUP,KC_LEFT,KC_DOWN,KC_RIGHT,KC_APPLICATION,KC_NO,
               KC_PGDOWN,KC_F6,KC_F7,KC_F8,KC_F9,KC_F10,KC_LSHIFT,
               KC_LCTL,KC_PSCREEN,KC_NO,KC_NO,KC_NO,
                                            KC_LALT,TO(0),
                                                LCTL(KC_U),
                                KC_INSERT,KC_DELETE,TO(0),

               KC_F11,KC_KP_EQUAL,KC_KP_PLUS,KC_KP_MINUS,KC_KP_SLASH,KC_NO,KC_EJCT,
               KC_F12,KC_KP_7,KC_KP_8,KC_KP_9,KC_KP_ASTERISK,RALT(KC_F),KC_NO,
                KC_KP_4,KC_KP_5,KC_KP_6,KC_KP_COMMA,KC_INT5,RGB_TOG,
               KC_RSHIFT,KC_KP_1,KC_KP_2,KC_KP_3,KC_KP_ENTER,KC_GRAVE,M_KANA,
                    KC_KP_0,KC_KP_DOT,KC_KP_ENTER,KC_RGUI,KC_RCTL,
            RGB_VAI,KC_NUMLOCK,
            RGB_VAD,
            TO(0),KC_BSPACE,KC_ENTER),

};

const uint16_t PROGMEM fn_actions[] = {
  [1] = ACTION_LAYER_TAP_TOGGLE(1)
};

// leaving this in place for compatibilty with old keymaps cloned and re-compiled.
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
{
      switch(id) {
        case 0:
        if (record->event.pressed) {
          SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
        }
		case 1: {
		if (record->event.pressed) {
			return MACRO( D(LCTL), T(H), U(LCTL), END );
			} else {
				return MACRO( D(LCTL), T(X), U(LCTL), END );
			}
      }
	  	case 2:
		//SEND_STRING("€");
		unicode_input_start(); register_hex(0x20AC); unicode_input_finish();
		return false;
		case 3:
		//SEND_STRING("₢");
		unicode_input_start(); register_hex(0x20A2); unicode_input_finish();
		return false;
			case 4:
		//SEND_STRING("$");
		unicode_input_start(); register_hex(0x0024); unicode_input_finish();
		return false;
				case 5: {
		if (record->event.pressed) {
			return MACRO( T(INT4), END );
			} else {
				return MACRO( T(BSLASH), END );
			}
      }
      				case 6: {
		if (record->event.pressed) {
			return MACRO( T(KANA), T(CAPSLOCK), T(CAPSLOCK), END );
}
      }


	  break;
	 }
    return MACRO_NONE;
};

bool process_record_user(uint16_t keycodem, keyrecord_t *record) {
  switch (keycode) {
    // dynamically generate these.
    case EPRM:
      if (record->event.pressed) {
        eeconfig_init();
      }
      return false;
      break;
    case VRSN:
      if (record->event.pressed) {
        SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
      }
      return false;
      break;
    case RGB_SLD:
      if (record->event.pressed) {
        rgblight_mode(1);
      }
      return false;
      break;

  }
  return true;
}

void led_set_user(uint8_t usb_led) {

if (usb_led & (1 << USB_LED_NUM_LOCK)) {
//#ifdef RGBLIGHT_ENABLE
rgblight_setrgb(00,00,255);
//#endif

} else {
//    #ifdef RGBLIGHT_ENABLE
rgblight_setrgb(255,00,00);
//    #endif // RGBLIGHT_ENABLE

}

if (usb_led & (1 << USB_LED_CAPS_LOCK)) {
ergodox_right_led_1_on();

} else {
ergodox_right_led_1_off();

}

if (usb_led & (1 << USB_LED_SCROLL_LOCK)) {

} else {

}

if (usb_led & (1 << USB_LED_COMPOSE)) {

} else {

}

if (usb_led & (1 << USB_LED_KANA)) {
ergodox_right_led_2_on();

} else {
ergodox_right_led_2_off();

}
}
void matrix_scan_user(void) {

    uint8_t layer = biton32(layer_state);

        switch (layer) {
        case 0:
            ergodox_right_led_3_off();
            if(rgbstatus) {
            rgblight_toggle();
            rgbstatus = false; }
            //BL_OFF;
            break;
        case 1:
            ergodox_right_led_3_on();
            if(rgbstatus) {} else {
                rgblight_toggle();
            register_code(KC_CAPSLOCK);
            unregister_code(KC_CAPSLOCK);
                        register_code(KC_CAPSLOCK);
            unregister_code(KC_CAPSLOCK);
            rgbstatus = true; }
            //rgblight_toggle();
            //BL_ON;
            break;
        case 2:
            //rgblight_on();
            break;
        case 3:
            //rgblight_on();
            break;
        default:
            break;
    }

};

bépoète depuis mars 2015

Hors ligne

#312 27/8/2017 01:23:51

Mimoza
Olivaw
Lieu : Terre
Inscription : 19/9/2012
Messages : 872

Re : [sujet technique] Adapter le bépo à l’ergodox

Comme je te disais, certains clavier peuvent passer d'une disposition «classique» vers le Dvorak car ce n'est que le déplacement des touches dans leur globalité. En ce qui concerne le Bépo cela est surement possible, mais je pense qu'il faut aller beaucoup plus loin que seulement modifier le keymap.c. De plus suivant ta modification sera fortement lié à la configuration de l'OS, si tu le fait pour le qwerty pour l'azerty tu auras des soucis. De plus certain caractère te seront impossible du fait que le drivers qw/azerty ne les connaissent pas.
Bref pas de solution simple a mon avis.

Hors ligne

#313 20/9/2017 19:45:14

bleuvert
Membres
Inscription : 9/9/2017
Messages : 7

Re : [sujet technique] Adapter le bépo à l’ergodox

Bonjour,

Serait il possible d'avoir les sources et le .hex de la disposition d'Anyndel, svp ?

Hors ligne

#314 3/10/2017 18:18:20

Anyndel
Membres
Lieu : Lyon, Paris
Inscription : 10/8/2017
Messages : 4

Re : [sujet technique] Adapter le bépo à l’ergodox

Salut, j’étais en voyage pendant un mois et je n’avais pas vu ton message !

J’ai modifié mon dernier message pour ajouter les deux fichiers que te demandais (ce sont ceux que j’utilise actuellement et je ne pense pas les avoir beaucoup modifiés depuis ledit message).

Hors ligne

#315 14/10/2017 11:18:44

bleuvert
Membres
Inscription : 9/9/2017
Messages : 7

Re : [sujet technique] Adapter le bépo à l’ergodox

Merci  !!

Hors ligne

Pied de page des forums