Changeset fff2958700e2f9392e408065a7e00e2a7ae883ac

Show
Ignore:
Timestamp:
03/19/03 18:14:50 (5 years ago)
Author:
Emmanuel Puig <karibu@videolan.org>
git-committer:
Emmanuel Puig <karibu@videolan.org> 1048094090 +0000
git-parent:

[d066ac365c7ba2e64cc804447ae974069f832673]

git-author:
Emmanuel Puig <karibu@videolan.org> 1048094090 +0000
Message:

* button.cpp : Fixing bug when disabling control
* Checkbox.cpp : adding onmouseover and onmouseout events
* Updating DTD
* win32_event.cpp : fixing bug for WINDOW_OPEN event

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • modules/gui/skins/controls/button.cpp

    r12ce13d rfff2958  
    33 ***************************************************************************** 
    44 * Copyright (C) 2003 VideoLAN 
    5  * $Id: button.cpp,v 1.2 2003/03/19 02:09:56 videolan Exp $ 
     5 * $Id: button.cpp,v 1.3 2003/03/19 17:14:50 karibu Exp $ 
    66 * 
    77 * Authors: Olivier Teuli� <ipkiss@via.ecp.fr> 
     
    239239    { 
    240240        Enabled = enabled; 
     241 
     242        // If cursor is in, send mouse out event 
     243        if( !Enabled && CursorIn ) 
     244        { 
     245            if( MouseOutActionName != "none" ) 
     246                MouseOutAction->SendEvent(); 
     247            CursorIn = false; 
     248        } 
     249 
    241250        ParentWindow->Refresh( Left, Top, Width, Height ); 
    242251    } 
  • modules/gui/skins/controls/checkbox.cpp

    ra64501f rfff2958  
    33 ***************************************************************************** 
    44 * Copyright (C) 2003 VideoLAN 
    5  * $Id: checkbox.cpp,v 1.1 2003/03/18 02:21:47 ipkiss Exp $ 
     5 * $Id: checkbox.cpp,v 1.2 2003/03/19 17:14:50 karibu Exp $ 
    66 * 
    77 * Authors: Olivier Teuli� <ipkiss@via.ecp.fr> 
     
    4545// Checkbox Button 
    4646//--------------------------------------------------------------------------- 
    47 ControlCheckBox::ControlCheckBox( string id, bool visible, int x, int y, 
    48     string img1, string img2, string click1, string click2, string disabled1, 
    49     string disabled2, string action1, string action2, string tooltiptext1, 
    50     string tooltiptext2, string help, 
     47ControlCheckBox::ControlCheckBox( 
     48    string id, 
     49    bool visible, 
     50    int x, int y, 
     51    string img1, string img2, string clickimg1, string clickimg2, 
     52    string disabled1, string disabled2, 
     53    string onclick1, string onclick2, string onmouseover1, 
     54    string onmouseout1, string onmouseover2, string onmouseout2, 
     55    string tooltiptext1, string tooltiptext2, string help, 
    5156    Window *Parent ) : GenericControl( id, visible, help, Parent ) 
    5257{ 
     
    5560    State            = 1;                   // 1 = up - 0 = down 
    5661    Selected         = false; 
     62    CursorIn         = false; 
    5763    Act              = 1; 
    5864    Enabled1         = true; 
     
    6066    Img1             = img1; 
    6167    Img2             = img2; 
    62     Click1           = click1; 
    63     Click2           = click2; 
     68    Click1           = clickimg1; 
     69    Click2           = clickimg2; 
    6470    Disabled1        = disabled1; 
    6571    Disabled2        = disabled2; 
    66     ClickActionName1 = action1; 
    67     ClickActionName2 = action2; 
     72 
     73    // Actions 
     74    ClickActionName1     = onclick1; 
     75    ClickActionName2     = onclick2; 
     76 
     77    MouseOverActionName1 = onmouseover1; 
     78    MouseOutActionName1  = onmouseout1; 
     79 
     80    if( onmouseover2 == "none" ) 
     81        MouseOverActionName2 = MouseOverActionName1; 
     82    else 
     83        MouseOverActionName2 = onmouseover2; 
     84 
     85    if( onmouseout2 == "none" ) 
     86        MouseOutActionName2 = MouseOutActionName1; 
     87    else 
     88        MouseOutActionName2  = onmouseout2; 
     89 
     90    // Tooltips 
    6891    ToolTipText1     = tooltiptext1; 
    6992    ToolTipText2     = tooltiptext2; 
     
    108131    ClickAction1 = new Action( p_intf, ClickActionName1 ); 
    109132    ClickAction2 = new Action( p_intf, ClickActionName2 ); 
    110  
     133    MouseOverAction1 = new Action( p_intf, MouseOverActionName1 ); 
     134    MouseOutAction1  = new Action( p_intf, MouseOutActionName1 ); 
     135    MouseOverAction2 = new Action( p_intf, MouseOverActionName2 ); 
     136    MouseOutAction2  = new Action( p_intf, MouseOutActionName2 ); 
    111137} 
    112138//--------------------------------------------------------------------------- 
     
    231257{ 
    232258    // Test enabled 
    233     if( !Selected || !button ) 
    234         return false; 
    235  
    236259    if( ( !Enabled1 && Act == 1 ) || ( !Enabled2 && Act == 2 ) ) 
    237260        return false; 
    238261 
    239     if( Act == 1 ) 
    240     { 
    241         if( State == 1 && Img[0]->Hit( x - Left, y - Top ) ) 
     262    // If mouse is entering control 
     263    if( MouseOver( x, y ) && !CursorIn ) 
     264    { 
     265        // If control is already selected 
     266        if( button == 1 && Selected ) 
    242267        { 
    243268            State = 0; 
    244269            ParentWindow->Refresh( Left, Top, Width, Height ); 
    245270        } 
    246         else if( State == 0 && !Img[1]->Hit( x - Left, y - Top ) ) 
     271 
     272        // Check events 
     273        if( Act == 1 && MouseOverActionName1 != "none" ) 
     274            MouseOverAction1->SendEvent(); 
     275        else if( Act == 2 && MouseOverActionName2 != "none" ) 
     276            MouseOverAction2->SendEvent(); 
     277 
     278        CursorIn = true; 
     279        return true; 
     280    } 
     281    // If mouse if leaving control 
     282    else if( !MouseOver( x, y ) && CursorIn ) 
     283    { 
     284        // If control is already selected 
     285        if( button == 1 && Selected ) 
    247286        { 
    248287            State = 1; 
    249288            ParentWindow->Refresh( Left, Top, Width, Height ); 
    250289        } 
    251     } 
    252     else if( Act == 2 ) 
    253     { 
    254         if( State == 1 && Img[2]->Hit( x - Left, y - Top ) ) 
    255         { 
    256             State = 0; 
    257             ParentWindow->Refresh( Left, Top, Width, Height ); 
    258         } 
    259         else if( State == 0 && !Img[3]->Hit( x - Left, y - Top ) ) 
    260         { 
    261             State = 1; 
    262             ParentWindow->Refresh( Left, Top, Width, Height ); 
    263         } 
     290 
     291        // Check events 
     292        if( Act == 1 && MouseOutActionName1 != "none" ) 
     293            MouseOutAction1->SendEvent(); 
     294        else if( Act == 2 && MouseOutActionName2 != "none" ) 
     295            MouseOutAction2->SendEvent(); 
     296 
     297        CursorIn = false; 
     298        return true; 
    264299    } 
    265300    return true; 
     
    303338        Enabled1 = enabled; 
    304339        if( Act == 1 ) 
    305             ParentWindow->Refresh( Left, Top, Width, Height ); 
     340        { 
     341            // If cursor is in, send mouse out event 
     342            if( !Enabled1 && CursorIn ) 
     343            { 
     344                if( MouseOutActionName2 != "none" ) 
     345                    MouseOutAction2->SendEvent(); 
     346                CursorIn = false; 
     347            } 
     348            ParentWindow->Refresh( Left, Top, Width, Height ); 
     349        } 
    306350    } 
    307351 
     
    313357        Enabled2 = enabled; 
    314358        if( Act == 2 ) 
    315             ParentWindow->Refresh( Left, Top, Width, Height ); 
    316     } 
    317  
    318 
    319 //--------------------------------------------------------------------------- 
    320  
     359        { 
     360            // If cursor is in, send mouse out event 
     361            if( !Enabled2 && CursorIn ) 
     362            { 
     363                if( MouseOutActionName2 != "none" ) 
     364                    MouseOutAction2->SendEvent(); 
     365                CursorIn = false; 
     366            } 
     367            ParentWindow->Refresh( Left, Top, Width, Height ); 
     368        } 
     369    } 
     370 
     371
     372//--------------------------------------------------------------------------- 
     373 
  • modules/gui/skins/controls/checkbox.h

    ra64501f rfff2958  
    33 ***************************************************************************** 
    44 * Copyright (C) 2003 VideoLAN 
    5  * $Id: checkbox.h,v 1.1 2003/03/18 02:21:47 ipkiss Exp $ 
     5 * $Id: checkbox.h,v 1.2 2003/03/19 17:14:50 karibu Exp $ 
    66 * 
    77 * Authors: Olivier Teuli� <ipkiss@via.ecp.fr> 
     
    5353        bool Enabled2; 
    5454        bool Selected; 
     55        bool CursorIn; 
    5556 
    5657        // List of actions to execute when clicking 
     
    6162        string   ClickActionName2; 
    6263 
     64        Action     *MouseOverAction1; 
     65        string      MouseOverActionName1; 
     66        Action     *MouseOutAction1; 
     67        string      MouseOutActionName1; 
     68        Action     *MouseOverAction2; 
     69        string      MouseOverActionName2; 
     70        Action     *MouseOutAction2; 
     71        string      MouseOutActionName2; 
     72 
    6373        // ToolTip text 
    6474        string      ToolTipText1; 
     
    6777    public: 
    6878        // Constructor 
    69         ControlCheckBox( string id, bool visible, int x, int y, string img1, 
    70             string img2,  string click1, string click2, string disabled1, 
    71             string disabled2, string action1, string action2, 
     79        ControlCheckBox( 
     80            string id, 
     81            bool visible, 
     82            int x, int y, 
     83            string img1, string img2,  string clickimg1, string clickimg2, 
     84            string disabled1, string disabled2, 
     85            string onclick1, string onclick2, string onmouseover1, 
     86            string onmouseout1, string onmouseover2, string onmouseout2, 
    7287            string tooltiptext1, string tooltiptext2, string help, 
    7388            Window *Parent ); 
  • modules/gui/skins/parser/flex.c

    r12ce13d rfff2958  
    22 
    33/* Scanner skeleton version: 
    4  * $Header: /root/vlc-cvs/modules/gui/skins/parser/flex.c,v 1.2 2003/03/19 02:09:56 videolan Exp $ 
     4 * $Header: /root/vlc-cvs/modules/gui/skins/parser/flex.c,v 1.3 2003/03/19 17:14:50 karibu Exp $ 
    55 */ 
    66 
     
    288288    yy_c_buf_p = yy_cp; 
    289289 
    290 #define YY_NUM_RULES 396 
    291 #define YY_END_OF_BUFFER 397 
    292 static yyconst short int yy_accept[2463] = 
     290#define YY_NUM_RULES 404 
     291#define YY_END_OF_BUFFER 405 
     292static yyconst short int yy_accept[2498] = 
    293293    {   0, 
    294294        0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
     
    305305        0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
    306306        0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
    307         0,    0,    0,    0,    0,    0,    0,    0,  397,  395
    308        29,   10,   10,   29,   29,  374,   10,  374,    5,    6, 
    309         5,    8,    9,    8,  390,  382,  383,  391,  388,  391
    310       389,  394,  382,  383,  394,  396,  396,   37,   10,   37, 
    311        37,   37,   35,   37,   37,  396,   41,   10,   41,  396
    312        41,  396,   51,   10,   51,   51,   51,   49,   51,   51, 
    313        51,   55,   10,   55,  396,   65,   10,   65,   65,   65, 
    314        63,   65,   65,   65,   69,   10,   69,  396,   87,   10, 
     307        0,    0,    0,    0,    0,    0,    0,    0,  405,  403
     308       29,   10,   10,   29,   29,  382,   10,  382,    5,    6, 
     309        5,    8,    9,    8,  398,  390,  391,  399,  396,  399
     310      397,  402,  390,  391,  402,  404,  404,   37,   10,   37, 
     311       37,   37,   35,   37,   37,  404,   41,   10,   41,  404
     312       41,  404,   51,   10,   51,   51,   51,   49,   51,   51, 
     313       51,   55,   10,   55,  404,   65,   10,   65,   65,   65, 
     314       63,   65,   65,   65,   69,   10,   69,  404,   87,   10, 
    315315 
    316316       87,   87,   87,   85,   87,   87,   87,   87,   87,   87, 
    317317       91,   10,   91,  103,   10,  103,  103,  103,  101,  103, 
    318       103,  103,  103,  107,   10,  107,  396,  127,   10,  127, 
     318      103,  103,  103,  107,   10,  107,  404,  127,   10,  127, 
    319319      127,  127,  125,  127,  127,  127,  127,  127,  127,  127, 
    320       127,  396,  131,   10,  131,  139,   10,  139,  139,  139, 
    321       137,  139,  139,  396,  143,   10,  143,  143,  396,  155, 
     320      127,  404,  131,   10,  131,  139,   10,  139,  139,  139, 
     321      137,  139,  139,  404,  143,   10,  143,  143,  404,  155, 
    322322       10,  155,  155,  155,  153,  155,  155,  155,  155,  159, 
    323        10,  159,  396,  177,   10,  177,  177,  177,  175,  177, 
    324       177,  177,  177,  177,  177,  181,   10,  181,  396,  203, 
     323       10,  159,  404,  177,   10,  177,  177,  177,  175,  177, 
     324      177,  177,  177,  177,  177,  181,   10,  181,  404,  203, 
    325325       10,  203,  203,  203,  201,  203,  203,  203,  203,  203, 
    326326 
    327       203,  203,  203,  207,   10,  207,  396,  235,   10,  235, 
     327      203,  203,  203,  207,   10,  207,  404,  235,   10,  235, 
    328328      235,  235,  233,  235,  235,  235,  235,  235,  235,  235, 
    329       235,  235,  239,   10,  239,  396,  273,   10,  273,  273
    330       273,  271,  273,  273,  273,  273,  273,  273,  273,  273
    331       273,  277,   10,  277,  396,  303,   10,  303,  303,  303
    332       301,  303,  303,  303,  303,  303,  303,  303,  303,  303
    333       303,  307,   10,  307,  396,  335,   10,  335,  335,  335
    334       333,  335,  335,  335,  335,  335,  335,  335,  335,  335
    335       335,  335,  339,   10,  339,  396,  369,   10,  369,  369
    336       369,  367,  369,  369,  369,  369,  369,  369,  369,  369
    337  
    338       369,  369,  369,  369,  373,   10,  373,  390,  382,  383
    339       391,  391,  390,   10,    0,    2,    2,    0,    4,    7, 
    340       385,  384,    0,    0,    0,    0,    0,  393,    0,   36, 
     329      235,  235,  239,   10,  239,  404,  281,   10,  281,  281
     330      281,  279,  281,  281,  281,  281,  281,  281,  281,  281
     331      281,  285,   10,  285,  404,  311,   10,  311,  311,  311
     332      309,  311,  311,  311,  311,  311,  311,  311,  311,  311
     333      311,  315,   10,  315,  404,  343,   10,  343,  343,  343
     334      341,  343,  343,  343,  343,  343,  343,  343,  343,  343
     335      343,  343,  347,   10,  347,  404,  377,   10,  377,  377
     336      377,  375,  377,  377,  377,  377,  377,  377,  377,  377
     337 
     338      377,  377,  377,  377,  381,   10,  381,  398,  390,  391
     339      399,  399,  398,   10,    0,    2,    2,    0,    4,    7, 
     340      393,  392,    0,    0,    0,    0,    0,  401,    0,   36, 
    341341       38,   38,   38,    0,    0,    0,    0,    0,    0,   50, 
    342342       52,   52,   52,   52,    0,   64,   66,   66,   66,   66, 
     
    352352        0,    0,    0,    0,  234,  236,  236,  236,  236,  236, 
    353353      236,  236,  236,  236,    0,    0,    0,    0,    0,    0, 
    354       272,  274,  274,  274,  274,  274,  274,  274,  274,  274
    355         0,    0,    0,    0,    0,  302,  304,  304,  304,  304
    356       304,  304,  304,  304,  304,  304,    0,    0,    0,    0, 
    357         0,  334,  336,  336,  336,  336,  336,  336,  336,  336
    358       336,  336,    0,    0,    0,    0,    0,  368,  370,  370
    359  
    360       370,  370,  370,  370,  370,  370,  370,  370,  370,  370
     354      280,  282,  282,  282,  282,  282,  282,  282,  282,  282
     355        0,    0,    0,    0,    0,  310,  312,  312,  312,  312
     356      312,  312,  312,  312,  312,  312,    0,    0,    0,    0, 
     357        0,  342,  344,  344,  344,  344,  344,  344,  344,  344
     358      344,  344,    0,    0,    0,    0,    0,  376,  378,  378
     359 
     360      378,  378,  378,  378,  378,  378,  378,  378,  378,  378
    361361        0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
    362         0,    3,    0,    0,    0,    0,    0,    0,    0,  392
     362        0,    3,    0,    0,    0,    0,    0,    0,    0,  400
    363363        0,   38,   38,    0,    0,    0,    0,    0,    0,    0, 
    364364       52,   52,    0,    0,    0,    0,   66,    0,    0,   66, 
     
    375375      190,  189,    0,    0,  236,  236,  236,    0,    0,  236, 
    376376      236,  236,    0,    0,  236,    0,  214,  213,    0,  216, 
    377       215,    0,    0,  274,  274,  274,    0,    0,  274,  274, 
    378       274,  274,    0,  246,  245,    0,  248,  247,    0,    0, 
    379       304,  304,  304,    0,    0,  304,  304,  304,    0,    0, 
    380       304,    0,  284,  283,    0,  286,  285,    0,    0,  336, 
    381  
    382       336,  336,  336,    0,    0,  336,  336,  336,  336,    0, 
    383       314,  313,    0,  316,  315,    0,    0,  370,  370,  370, 
    384         0,    0,  370,  370,  370,  370,  370,  370,  370,    0, 
    385       346,  345,    0,  348,  347,    0,    0,    0,  387,    0, 
    386        28,    1,    0,    0,  380,    0,    0,    0,  377,  376, 
    387         0,    0,    0,    0,   38,    0,    0,    0,   40,    0, 
    388         0,    0,    0,    0,   52,   52,    0,   44,   43,    0, 
    389         0,   54,    0,   66,    0,   58,   57,    0,    0,    0, 
    390         0,   68,    0,   88,   88,    0,   72,   71,   88,   88, 
    391        88,   88,    0,    0,   90,    0,  104,  104,  104,  104, 
    392  
    393         0,    0,  106,    0,  128,  128,  128,    0,  110,  109, 
    394       128,  128,    0,    0,    0,  130,    0,    0,    0,    0, 
    395         0,    0,    0,    0,    0,    0,    0,  142,    0,  156, 
    396       156,    0,    0,  158,    0,  178,    0,  162,  161,  178, 
    397       178,  178,    0,    0,  180,    0,  204,  204,    0,  184, 
    398       183,  204,  204,    0,    0,  206,    0,  236,  236,  236, 
    399         0,  210,  209,  236,  236,  236,    0,  218,  217,  236, 
    400         0,    0,  238,    0,  274,  274,  274,    0,  242,  241, 
    401       274,  274,  274,  274,  274,    0,    0,  276,    0,    0, 
    402         0,  304,  304,    0,  280,  279,    0,    0,  304,  304, 
    403  
    404         0,  290,  289,  304,    0,    0,  306,    0,  336,  336, 
    405       336,  336,    0,  310,  309,  336,  336,  336,  336,    0, 
    406         0,  338,    0,    0,    0,  370,  370,    0,  342,  341, 
    407       370,  370,    0,    0,  370,  370,  370,  370,    0,    0, 
    408       372,    0,    0,    0,    0,  381,  375,    0,    0,    0, 
    409         0,   34,   33,   38,    0,    0,    0,    0,   70,    0, 
    410        52,    0,    0,    0,   66,    0,   62,   61,    0,   88, 
    411         0,    0,   88,    0,    0,   88,   88,    0,  104,  104, 
    412         0,    0,  104,    0,  128,  128,  128,  128,  128,    0, 
     377      215,    0,    0,  282,  282,  282,    0,    0,  282,  282, 
     378      282,  282,  282,    0,  246,  245,    0,  248,  247,    0, 
     379        0,  312,  312,  312,    0,    0,  312,  312,  312,    0, 
     380        0,  312,    0,  292,  291,    0,  294,  293,    0,    0, 
     381 
     382      344,  344,  344,  344,    0,    0,  344,  344,  344,  344, 
     383        0,  322,  321,    0,  324,  323,    0,    0,  378,  378, 
     384      378,    0,    0,  378,  378,  378,  378,  378,  378,  378, 
     385        0,  354,  353,    0,  356,  355,    0,    0,    0,  395, 
     386        0,   28,    1,    0,    0,  388,    0,    0,    0,  385, 
     387      384,    0,    0,    0,    0,   38,    0,    0,    0,   40, 
     388        0,    0,    0,    0,    0,   52,   52,    0,   44,   43, 
     389        0,    0,   54,    0,   66,    0,   58,   57,    0,    0, 
     390        0,    0,   68,    0,   88,   88,    0,   72,   71,   88, 
     391       88,   88,   88,    0,    0,   90,    0,  104,  104,  104, 
     392 
     393      104,    0,    0,  106,    0,  128,  128,  128,    0,  110, 
     394      109,  128,  128,    0,    0,    0,  130,    0,    0,    0, 
     395        0,    0,    0,    0,    0,    0,    0,    0,  142,    0, 
     396      156,  156,    0,    0,  158,    0,  178,    0,  162,  161, 
     397      178,  178,  178,    0,    0,  180,    0,  204,  204,    0, 
     398      184,  183,  204,  204,    0,    0,  206,    0,  236,  236, 
     399      236,    0,  210,  209,  236,  236,  236,    0,  218,  217, 
     400      236,    0,    0,  238,    0,  282,  282,  282,    0,  242, 
     401      241,  282,  282,  282,  282,  282,  282,    0,    0,  284, 
     402        0,    0,    0,  312,  312,    0,  288,  287,    0,    0, 
     403 
     404      312,  312,    0,  298,  297,  312,    0,    0,  314,    0, 
     405      344,  344,  344,  344,    0,  318,  317,  344,  344,  344, 
     406      344,    0,    0,  346,    0,    0,    0,  378,  378,    0, 
     407      350,  349,  378,  378,    0,    0,  378,  378,  378,  378, 
     408        0,    0,  380,    0,    0,    0,    0,  389,  383,    0, 
     409        0,    0,    0,   34,   33,   38,    0,    0,    0,    0, 
     410       70,    0,   52,    0,    0,    0,   66,    0,   62,   61, 
     411        0,   88,    0,    0,   88,    0,    0,   88,   88,    0, 
     412      104,  104,    0,    0,  104,    0,  128,  128,  128,  128, 
     413      128,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
     414 
     415        0,    0,  156,  156,    0,    0,    0,  178,  178,  178, 
     416        0,  204,    0,    0,  204,  204,    0,  236,    0,    0, 
     417        0,    0,  236,  236,  236,  236,    0,  282,  282,    0, 
     418        0,    0,    0,    0,    0,  282,  282,  282,  282,    0, 
     419        0,  302,  301,    0,    0,    0,    0,    0,  304,  303, 
     420      312,    0,    0,  312,    0,  344,  344,    0,    0,    0, 
     421        0,  344,    0,    0,  344,  344,    0,    0,  368,  367, 
     422        0,    0,    0,    0,  378,  378,    0,  370,  369,  378, 
     423      378,  378,  378,    0,    0,    0,    0,    0,   12,    0, 
     424      386,  387,   30,   38,    0,    0,    0,   56,   70,    0, 
     425 
     426       52,    0,   46,   45,    0,    0,    0,    0,    0,    0, 
     427        0,   74,   73,   88,    0,   76,   75,   88,   88,    0, 
     428      104,    0,    0,    0,   94,   93,  104,    0,    0,    0, 
     429      128,  128,  128,  128,    0,    0,    0,    0,    0,    0, 
     430        0,    0,    0,    0,    0,  156,    0,    0,    0,    0, 
     431      174,  173,    0,    0,  178,  178,    0,    0,    0,    0, 
     432      200,  199,  204,  204,    0,  236,    0,  220,  219,    0, 
     433      232,  231,  236,  236,  236,  236,    0,  282,  282,    0, 
     434      278,  277,    0,  250,  249,    0,  254,  253,  282,  282, 
     435      282,  282,    0,    0,  300,  299,    0,  308,  307,  312, 
     436 
     437        0,  296,  295,  312,    0,    0,    0,  344,    0,  328, 
     438      327,    0,  340,  339,  344,    0,  326,  325,  344,    0, 
     439        0,    0,    0,  362,  361,    0,  372,  371,  378,  378, 
     440      378,  378,  378,    0,    0,    0,    0,    0,    0,   11, 
     441       30,    0,    0,    0,    0,   42,   56,  108,   52,    0, 
     442        0,   60,   59,    0,    0,   78,   77,    0,    0,   88, 
     443        0,    0,    0,   89,    0,    0,    0,   98,   97,  104, 
     444        0,    0,  120,  119,  128,  128,  128,  128,    0,    0, 
     445      144,    0,    0,    0,    0,    0,    0,    0,    0,  156, 
     446        0,  152,  151,    0,    0,  170,  169,  178,  178,    0, 
     447 
     448        0,  196,  195,  204,  204,    0,  236,  236,  236,  236, 
     449      236,    0,  282,  282,  282,  282,  282,  282,    0,  312, 
     450      312,    0,    0,  330,  329,  344,    0,    0,  344,  344, 
     451        0,  332,  331,    0,  378,  378,  378,  378,  378,    0, 
     452      358,  357,    0,    0,    0,    0,    0,   32,   31,    0, 
     453        0,   39,   42,  108,   52,    0,    0,   67,    0,   82, 
     454       81,   88,    0,   80,   79,    0,   96,   95,    0,    0, 
     455        0,  128,  128,  128,    0,    0,    0,    0,  144,    0, 
     456        0,    0,    0,    0,    0,    0,    0,  156,    0,    0, 
     457        0,    0,    0,    0,    0,    0,    0,    0,    0,  236, 
     458 
     459        0,    0,  236,  236,    0,    0,    0,  282,  282,  282, 
     460      282,  282,  282,    0,    0,    0,  312,    0,    0,    0, 
     461        0,    0,    0,  336,  335,  344,    0,    0,    0,  378, 
     462      378,  378,  378,    0,    0,    0,    0,    0,    0,    0, 
     463       52,    0,   53,   88,    0,  100,   99,    0,    0,    0, 
     464        0,    0,  128,    0,  112,  111,    0,    0,  129,    0, 
    413465        0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
    414  
    415       156,  156,    0,    0,    0,  178,  178,  178,    0,  204, 
    416         0,    0,  204,  204,    0,  236,    0,    0,    0,    0, 
    417       236,  236,  236,  236,    0,  274,  274,    0,    0,    0, 
    418         0,    0,    0,  274,  274,  274,    0,    0,  294,  293, 
    419         0,    0,    0,    0,    0,  296,  295,  304,    0,    0, 
    420       304,    0,  336,  336,    0,    0,    0,    0,  336,    0, 
    421         0,  336,  336,    0,    0,  360,  359,    0,    0,    0, 
    422         0,  370,  370,    0,  362,  361,  370,  370,  370,  370, 
    423         0,    0,    0,    0,    0,   12,    0,  378,  379,   30, 
    424        38,    0,    0,    0,   56,   70,    0,   52,    0,   46, 
    425  
    426        45,    0,    0,    0,    0,    0,    0,    0,   74,   73, 
    427        88,    0,   76,   75,   88,   88,    0,  104,    0,    0, 
    428         0,   94,   93,  104,    0,    0,    0,  128,  128,  128, 
    429       128,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
    430         0,    0,  156,    0,    0,    0,    0,  174,  173,    0, 
    431         0,  178,  178,    0,    0,    0,    0,  200,  199,  204, 
    432       204,    0,  236,    0,  220,  219,    0,  232,  231,  236, 
    433       236,  236,  236,    0,  274,  274,    0,  270,  269,    0, 
    434       250,  249,    0,  254,  253,  274,  274,  274,    0,    0, 
    435       292,  291,    0,  300,  299,  304,    0,  288,  287,  304, 
    436  
    437         0,    0,    0,  336,    0,  320,  319,    0,  332,  331, 
    438       336,    0,  318,  317,  336,    0,    0,    0,    0,  354, 
    439       353,    0,  364,  363,  370,  370,  370,  370,  370,    0, 
    440         0,    0,    0,    0,    0,   11,   30,    0,    0,    0, 
    441         0,   42,   56,  108,   52,    0,    0,   60,   59,    0, 
    442         0,   78,   77,    0,    0,   88,    0,    0,    0,   89, 
    443         0,    0,    0,   98,   97,  104,    0,    0,  120,  119, 
    444       128,  128,  128,  128,    0,    0,  144,    0,    0,    0, 
    445         0,    0,    0,    0,    0,  156,    0,  152,  151,    0, 
    446         0,  170,  169,  178,  178,    0,    0,  196,  195,  204, 
    447  
    448       204,    0,  236,  236,  236,  236,  236,    0,  274,  274, 
    449       274,  274,  274,    0,  304,  304,    0,    0,  322,  321, 
    450       336,    0,    0,  336,  336,    0,  324,  323,    0,  370, 
    451       370,  370,  370,  370,    0,  350,  349,    0,    0,    0, 
    452         0,    0,   32,   31,    0,    0,   39,   42,  108,   52, 
    453         0,    0,   67,    0,   82,   81,   88,    0,   80,   79, 
    454         0,   96,   95,    0,    0,    0,  128,  128,  128,    0, 
    455         0,    0,    0,  144,    0,    0,    0,    0,    0,    0, 
    456         0,    0,  156,    0,    0,    0,    0,    0,    0,    0, 
    457         0,    0,    0,    0,  236,    0,    0,  236,  236,    0, 
    458  
    459         0,    0,  274,  274,  274,  274,  274,    0,    0,    0, 
    460       304,    0,    0,    0,    0,    0,    0,  328,  327,  336, 
    461         0,    0,    0,  370,  370,  370,  370,    0,    0,    0, 
    462         0,    0,    0,    0,   52,    0,   53,   88,    0,  100, 
    463        99,    0,    0,    0,    0,    0,  128,    0,  112,  111, 
    464         0,    0,  129,    0,    0,    0,    0,    0,    0,    0, 
    465         0,    0,    0,    0,  157,    0,  172,  171,    0,  164, 
    466       163,    0,    0,  198,  197,    0,  186,  185,    0,    0, 
    467         0,    0,  224,  223,  236,  236,  236,    0,  212,  211, 
    468         0,  274,  274,  274,  274,    0,    0,    0,    0,  274, 
    469  
    470         0,  244,  243,    0,  304,    0,  282,  281,    0,    0, 
    471       326,  325,  336,    0,  312,  311,    0,  370,  370,    0, 
    472         0,    0,    0,    0,  344,  343,    0,  386,    0,    0, 
    473        92,   52,    0,    0,    0,    0,  124,  123,    0,  118, 
    474       117,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
    475         0,    0,    0,  150,  149,    0,    0,    0,  222,  221, 
    476       236,  236,  236,    0,    0,    0,    0,    0,    0,    0, 
    477         0,    0,    0,  262,  261,    0,  264,  263,  274,    0, 
    478       304,    0,  336,    0,    0,    0,  370,    0,  356,  355, 
    479         0,  358,  357,    0,    0,    0,    0,    0,    0,    0, 
    480  
     466      157,    0,  172,  171,    0,  164,  163,    0,    0,  198, 
     467      197,    0,  186,  185,    0,    0,    0,    0,  224,  223, 
     468      236,  236,  236,    0,  212,  211,    0,  282,  282,  282, 
     469 
     470      282,    0,    0,    0,    0,  282,  282,  282,    0,  244, 
     471      243,    0,  312,    0,  290,  289,    0,    0,  334,  333, 
     472      344,    0,  320,  319,    0,  378,  378,    0,    0,    0, 
     473        0,    0,  352,  351,    0,  394,    0,    0,   92,   52, 
     474        0,    0,    0,    0,  124,  123,    0,  118,  117,    0, 
     475        0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
     476        0,  150,  149,    0,    0,    0,  222,  221,  236,  236, 
     477      236,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
     478        0,  262,  261,    0,  264,  263,  282,  282,  282,    0, 
     479      312,    0,  344,    0,    0,    0,  378,    0,  364,  363, 
     480 
     481        0,  366,  365,    0,    0,    0,    0,    0,    0,    0, 
    481482        0,    0,    0,    0,    0,    0,   92,    0,    0,    0, 
    482483       84,   83,    0,    0,  122,  121,    0,    0,    0,    0, 
    483484        0,    0,    0,    0,    0,    0,    0,    0,    0,  236, 
    484485      236,    0,    0,  252,  251,    0,  256,  255,    0,  258, 
    485       257,    0,  260,  259,  274,    0,  304,    0,  336,    0
    486         0,  352,  351,  370,    0,    0,    0,    0,    0,    0, 
     486      257,    0,  260,  259,  282,  282,  282,  282,    0,  312
     487        0,  344,    0,    0,  360,  359,  378,    0,    0,    0, 
    487488        0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
    488         0,   48,   47,    0,  105,    0,    0,    0,    0,    0, 
    489         0,    0,  308,    0,    0,    0,    0,  228,  227,    0, 
    490         0,    0,    0,    0,  274,  274,    0,    0,    0,    0, 
    491  
    492         0,    0,    0,  370,    0,    0,    0,    0,    0,    0, 
     489        0,    0,    0,    0,   48,   47,    0,  105,    0,    0, 
     490        0,    0,    0,    0,    0,  316,    0,    0,    0,    0, 
     491 
     492      228,  227,    0,    0,    0,    0,    0,    0,    0,    0, 
     493        0,  282,  282,  282,  282,    0,    0,    0,    0,    0, 
     494        0,    0,  378,    0,    0,    0,    0,    0,    0,    0, 
     495        0,    0,    0,    0,    0,    0,    0,    0,    0,  132, 
     496        0,    0,  160,    0,    0,    0,  316,    0,    0,    0, 
     497        0,  226,  225,    0,  230,  229,    0,    0,  268,  267, 
     498        0,  272,  271,    0,    0,    0,    0,    0,    0,    0, 
     499        0,    0,    0,  306,  305,    0,    0,  338,  337,    0, 
    493500        0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
    494       132,    0,    0,  160,    0,    0,    0,  308,    0,    0, 
    495         0,    0,  226,  225,    0,  230,  229,    0,    0,    0, 
    496         0,    0,    0,    0,  298,  297,    0,    0,  330,  329, 
     501        0,    0,    0,    0,    0,    0,    0,    0,    0,  132, 
     502 
     503      208,    0,  160,    0,    0,  286,    0,    0,    0,    0, 
     504        0,  266,  265,    0,  270,  269,    0,  274,  273,    0, 
     505      276,  275,    0,    0,    0,  345,    0,  374,  373,    0, 
    497506        0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
     507        0,    0,    0,    0,    0,    0,    0,  208,    0,    0, 
     508        0,  286,    0,  141,    0,  179,    0,    0,    0,    0, 
    498509        0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
    499       132,  208,    0,  160,    0,    0,  278,    0,    0,    0, 
    500         0,    0,  266,  265,    0,  268,  267,    0,    0,    0, 
    501       337,    0,  366,  365,    0,    0,    0,    0,    0,    0, 
    502  
     510        0,    0,    0,    0,    0,    0,    0,    0,  240,  348, 
     511        0,    0,    0,  237,    0,    0,  313,    0,    0,    0, 
    503512        0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
    504         0,    0,  208,    0,    0,    0,  278,    0,  141,    0, 
    505       179,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
     513 
     514        0,    0,    0,    0,  240,  348,  182,    0,    0,    0, 
    506515        0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
    507         0,    0,    0,  240,  340,    0,    0,    0,  237,    0, 
    508         0,  305,    0,    0,    0,    0,    0,    0,    0,    0, 
    509         0,    0,    0,    0,    0,    0,    0,    0,    0,  240, 
    510       340,  182,    0,    0,    0,    0,    0,    0,    0,    0, 
    511         0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
    512       182,    0,    0,  275,    0,  371,    0,    0,    0,    0, 
    513  
    514         0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
    515         0,    0,  205,    0,    0,    0,    0,    0,    0,    0, 
    516         0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
    517         0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
    518         0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
     516        0,    0,    0,    0,    0,  182,    0,    0,  283,    0, 
     517      379,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
     518        0,    0,    0,    0,    0,    0,    0,  205,    0,    0, 
    519519        0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
    520520        0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
     
    542542        0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
    543543        0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
    544         0,    0,    0,    0,   16,    0,    0,    0,    0,    0, 
    545544        0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
    546  
    547         0,    0,    0,    0,    0,    0,    0,   14,    0,    0, 
    548         0,    0,    0,    0,    0,    0,    0,    0,   17,    0, 
    549         0,    0,    0,   18,    0,   22,    0,    0,    0,    0, 
    550545        0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
    551         0,    0,    0,    0,    0,   21,    0,    0,    0,    0, 
     546 
     547        0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
     548        0,    0,    0,    0,    0,    0,    0,    0,    0,   16, 
     549        0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
     550        0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
     551        0,    0,   14,    0,    0,    0,    0,    0,    0,    0, 
     552        0,    0,    0,   17,    0,    0,    0,    0,   18,    0, 
     553       22,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
     554        0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
     555       21,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
     556        0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
     557 
    552558        0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
    553559        0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
    554560        0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
    555         0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
    556         0,    0,    0,    0,    0,    0,    0,    0,   19,    0, 
    557  
     561        0,    0,    0,   19,    0,    0,    0,    0,    0,    0, 
    558562        0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
    559563        0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
    560         0,    0,    0,    0,    0,    0,    0,   27,    0,    0
    561         0,    0,   20,    0,   23,    0,    0,    0,    0