§
    í¿jÎ(  ã                  ó´  — d Z ddlmZ ddlZddlmc mZ ddl	Z	ddl
Z
ddlZddlZddlmZ ddlmZmZ ddlZddlmc mZ ddlmZ  e
j        d¦  «        Zdd	d
dddœZg d¢Z ej        d¬¦  «        d%d„¦   «         Z ej        d¬¦  «        d&d„¦   «         Z ej        d¬¦  «        d'd„¦   «         Z d(d„Z!d(d„Z"d(d„Z#d)d„Z$d)d „Z%d*d!„Z&d*d"„Z'd+d#„Z(d+d$„Z)dS ),zõ
Unit Tests for Cross-Language Map Styles Catalog Synchronization.
Verifies 100% parity across server/world/map_style_catalog.py, data/map_styles.db,
and client/webapp/js/data/map_style_catalog.js, including legacy biome backward compatibility.
é    )ÚannotationsN)ÚPath)ÚAnyÚDict©ÚMapStyleServicez^#[0-9a-fA-F]{6}$)ÚBLEACHED_BONE_CANYONÚSTY_11_HEM_NUI_XUONG_TRANG)ÚSAVAGE_MANGROVE_SWAMPÚSTY_06_BAI_THA_MA_NGAP_MAN)ÚCRIMSON_BLOOD_FORESTÚSTY_02_HUYET_SAT_LAM)ÚOUTCAST_MINE_SHAFTSÚSTY_16_MO_QUANG_LUU_DAY)ÚCORRUPTED_FIEND_RUINSÚSTY_21_PHE_TICH_MA_THAN)é   é   é   é   é   )ÚHOANG_DA_DA_NGOAIÚDAM_LAY_DOC_CHUONGÚHEM_NUI_COT_MACÚHAM_MO_TA_QUAIÚTHAN_DIEN_PHE_TICHÚHU_KHONG_DI_BIENÚmodule)ÚscopeÚreturnr   c                 ól   — t          t          ¦  «                             ¦   «         j        j        j        S )N)r   Ú__file__ÚresolveÚparent© ó    ú@C:\Projects\FreeExile\tests\unit\test_map_styles_catalog_sync.pyÚproject_rootr(   (   s#   € å•‰>Œ>×!Ò!Ñ#Ô#Ô*Ô1Ô8Ð8r&   r(   r   c                ó2   — | dz  dz  }t          |¬¦  «        S )NÚdatazmap_styles.db)Údb_pathr   )r(   Údb_files     r'   Ú
db_servicer-   -   s"   € à˜VÑ# oÑ5€GÝ 7Ð+Ñ+Ô+Ð+r&   úDict[str, Any]c                óà  — | dz  dz  dz  dz  dz  }|j         } |¦   «         }|s£t          j        d|› �¦  «        dz   dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        d	œz  }t          t          j        |¦  «        ¦  «        ‚d
x}}d}t          j
        ddd|gt          | ¦  «        dddd¬¦  «        }d„ |j        pd                     ¦   «         D ¦   «         }t          |¦  «        }d}	||	k    }
|
�st          j        d|
fd||	f¦  «        dt          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        nddt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |	¦  «        dœz  }t          j        d|j        › d|j        › d�¦  «        dz   d|iz  }t          t          j        |¦  «        ¦  «        ‚d
x}x}
}	t#          j        |d         ¦  «        S ) zSExecute Node.js to import and serialize client/webapp/js/data/map_style_catalog.js.ÚclientÚwebappÚjsr*   zmap_style_catalog.jszClient catalog file missing: zD
>assert %(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.is_file
}()
}Újs_file©Úpy0Úpy2Úpy4Na   
    import catalog from './client/webapp/js/data/map_style_catalog.js';
    const payload = {
        map_styles: catalog.MAP_STYLES,
        code_to_style: catalog.BIOME_CODE_TO_STYLE_ID,
        legacy_map: catalog.LEGACY_BIOME_MAP
    };
    console.log(JSON.stringify(payload));
    Únodez--input-type=modulez-eTzutf-8)ÚcwdÚcapture_outputÚtextÚencodingÚcheckc                ó„   — g | ]=}|                      ¦   «                              d ¦  «        ¯)|                      ¦   «         ‘Œ>S )Ú{)ÚstripÚ
startswith)Ú.0Úlines     r'   ú
<listcomp>z#js_catalog_data.<locals>.<listcomp>K   sA   € ÐnÐnÐn TÐQU×Q[ÒQ[ÑQ]ÔQ]×QhÒQhÐilÑQmÔQmÐn�D—J’J‘L”LÐnÐnÐnr&   Ú r   )ú>)z/%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} > %(py6)sÚlenÚstdout_lines©r5   Úpy1Úpy3Úpy6zNo JSON output from Node: z
 (stderr: ú)ú
>assert %(py8)sÚpy8éÿÿÿÿ)Úis_fileÚ
@pytest_arÚ_format_assertmsgÚ@py_builtinsÚlocalsÚ_should_repr_global_nameÚ	_safereprÚAssertionErrorÚ_format_explanationÚ
subprocessÚrunÚstrÚstdoutÚ
splitlinesrG   Ú_call_reprcompareÚstderrÚjsonÚloads)r(   r3   Ú@py_assert1Ú@py_assert3Ú@py_format5ÚscriptÚprocrH   Ú@py_assert2Ú@py_assert5Ú@py_assert4Ú@py_format7Ú@py_format9s                r'   Újs_catalog_datarm   3   s±  € ð ˜XÑ%¨Ñ0°4Ñ7¸&Ñ@ÐCYÑY€GØŒ?ÐGˆ?ˆ?ÑÔÐGÐÐGÕGÔGÐG¸gÐGÐGÑGÔGÐGÑGÐGÕGÔGÑGÔGÐGÐGÕGÔGˆ7ÑGÔGÐGÕGÔGˆ7ÑGÔGÐGÐGÕGÔGˆ?ÑGÔGÕGÔGÐÑGÔGÐGÐGÑGÐGÕGÕGÔGÐGÑGÔGÑGÔGÐGÐGÐGÐGÐGð€Fõ Œ>Ø	Ð&¨¨fÐ5Ý�ÑÔØØØØðñ ô €Dð oÐn¨d¬kÐ.?¸R×-KÒ-KÑ-MÔ-MÐnÑnÔn€LÝˆ|ÑÔÐd˜qÐdÐ˜qÒ ÐdÐdÑdÕdÔdÐdÐdÐdÐdÐ˜qÐdÑdÔdÐdÕdÔdÑdÔdÐdÐdÕdÔd�3ÑdÔdÐdÕdÔd�3ÑdÔdÐdÐdÐdÕdÔdÑdÔdÐdÐdÕdÔdˆ|ÑdÔdÐdÕdÔdˆ|ÑdÔdÐdÐdÕdÔdÐÑdÔdÕdÔd˜qÑdÔdÐdÐdÑdÐdÕdÔdÐ"d¸t¼{Ð"dÐ"dÐVZÔVaÐ"dÐ"dÐ"dÑdÔdÐdÑdÐdÐdÐdÑdÐdÕdÕdÔdÐdÑdÔdÑdÔdÐdÐdÐdÐdÐdÐdÐdÝŒ:�l 2Ô&Ñ'Ô'Ð'r&   r-   ÚNonec                ó˜  — t          j        ¦   «         }|                      ¦   «         }t          |¦  «        }d}||k    }|sòt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        nddt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j
        |¦  «        ¦  «        ‚d	x}x}}t          |¦  «        }d}||k    }|sòt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        ndd
t          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd
t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j
        |¦  «        ¦  «        ‚d	x}x}}d	S )zAVerify that Python catalog and DB both contain exactly 30 styles.é   ©ú==©z0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py6)srG   Ú	py_stylesrI   úassert %(py8)srO   NÚ	db_styles)Ú
py_catalogÚlist_stylesrG   rR   r_   rT   rU   rV   rW   rX   rY   )r-   rt   rv   rh   ri   rj   rk   rl   s           r'   Ú-test_python_catalog_and_db_style_count_parityry   P   s]  € åÔ&Ñ(Ô(€IØ×&Ò&Ñ(Ô(€IÝˆy‰>Œ>Ð˜RÐˆ>˜RÒÐÐÐÕÔÐÐÐÐˆ>˜RÐÑÔÐÕÔÑÔÐÐÕÔ�3ÑÔÐÕÔ�3ÑÔÐÐÐÕÔÑÔÐÐÕÔˆyÑÔÐÕÔˆyÑÔÐÐÕÔˆ>ÑÔÕÔ˜RÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÐÐÝˆy‰>Œ>Ð˜RÐˆ>˜RÒÐÐÐÕÔÐÐÐÐˆ>˜RÐÑÔÐÕÔÑÔÐÐÕÔ�3ÑÔÐÕÔ�3ÑÔÐÐÐÕÔÑÔÐÐÕÔˆyÑÔÐÕÔˆyÑÔÐÐÕÔˆ>ÑÔÕÔ˜RÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÐÐÐÐr&   c                óv)  — d„ |                       ¦   «         D ¦   «         }t          j        }|j        } |¦   «         }t	          |¦  «        }|j        } |¦   «         }t	          |¦  «        }||k    }	|	�sÄt          j        d|	fd||f¦  «        dt          j        ¦   «         v st          j	        t          ¦  «        rt          j
        t          ¦  «        nddt          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        ndt          j
        |¦  «        t          j
        |¦  «        t          j
        |¦  «        dt          j        ¦   «         v st          j	        t          ¦  «        rt          j
        t          ¦  «        nddt          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        ndt          j
        |¦  «        t          j
        |¦  «        t          j
        |¦  «        dœ
z  }
dd	|
iz  }t          t          j        |¦  «        ¦  «        ‚d
x}x}x}x}	x}x}}|                     ¦   «         D �]]\  }}||         }|j        }|j        }||k    }|sèt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        ndt          j
        |¦  «        dt          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        ndt          j
        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d
x}x}}|j        }|j        }||k    }|sèt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        ndt          j
        |¦  «        dt          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        ndt          j
        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d
x}x}}|j        }|j        }||k    }|sèt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        ndt          j
        |¦  «        dt          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        ndt          j
        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d
x}x}}|j        }|j        }||k    }|sèt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        ndt          j
        |¦  «        dt          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        ndt          j
        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d
x}x}}|j        }|j        }||k    }|sèt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        ndt          j
        |¦  «        dt          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        ndt          j
        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d
x}x}}|j        }|j        }|j        }|j        }||k    }|�st          j        d|fd||f¦  «        dt          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        ndt          j
        |¦  «        t          j
        |¦  «        dt          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        ndt          j
        |¦  «        t          j
        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d
x}x}x}x}}|j        }|j        }|j        }|j        }||k    }|�st          j        d|fd||f¦  «        dt          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        ndt          j
        |¦  «        t          j
        |¦  «        dt          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        ndt          j
        |¦  «        t          j
        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d
x}x}x}x}}|j        }|j        }|j        }|j        }||k    }|�st          j        d|fd||f¦  «        dt          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        ndt          j
        |¦  «        t          j
        |¦  «        dt          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        ndt          j
        |¦  «        t          j
        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d
x}x}x}x}}|j        }|j        }|j        }|j        }||k    }|�st          j        d|fd||f¦  «        dt          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        ndt          j
        |¦  «        t          j
        |¦  «        dt          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        ndt          j
        |¦  «        t          j
        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d
x}x}x}x}}|j        }|j        }|j        }|j        }||k    }|�st          j        d|fd||f¦  «        dt          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        ndt          j
        |¦  «        t          j
        |¦  «        dt          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        ndt          j
        |¦  «        t          j
        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d
x}x}x}x}}|j        }|j        }|j        }|j        }||k    }|�st          j        d|fd||f¦  «        dt          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        ndt          j
        |¦  «        t          j
        |¦  «        dt          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        ndt          j
        |¦  «        t          j
        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d
x}x}x}x}}t6          j        }|j        }|j        } ||¦  «        }	|j        }|j        }|	|k    }|�s|t          j        d|fd|	|f¦  «        dt          j        ¦   «         v st          j	        t6          ¦  «        rt          j
        t6          ¦  «        ndt          j
        |¦  «        dt          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        ndt          j
        |¦  «        t          j
        |¦  «        t          j
        |	¦  «        dt          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        ndt          j
        |¦  «        t          j
        |¦  «        d œ	z  }d!d"|iz  }t          t          j        |¦  «        ¦  «        ‚d
x}x}x}x}	x}x}}t6          j        }|j        }|j        } ||¦  «        }	|j        }|j        }|	|k    }|�s|t          j        d|fd#|	|f¦  «        dt          j        ¦   «         v st          j	        t6          ¦  «        rt          j
        t6          ¦  «        ndt          j
        |¦  «        dt          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        ndt          j
        |¦  «        t          j
        |¦  «        t          j
        |	¦  «        dt          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        ndt          j
        |¦  «        t          j
        |¦  «        d œ	z  }d!d"|iz  }t          t          j        |¦  «        ¦  «        ‚d
x}x}x}x}	x}x}}|j        }|j         }|j        }|j         }||k    }|�st          j        d|fd$||f¦  «        dt          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        ndt          j
        |¦  «        t          j
        |¦  «        dt          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        ndt          j
        |¦  «        t          j
        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d
x}x}x}x}}|j!        }|j!        }||k    }|sèt          j        d|fd%||f¦  «        dt          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        ndt          j
        |¦  «        dt          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        ndt          j
        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d
x}x}}�Œ_d
S )&zIVerify 1-to-1 attribute match between Python catalog and SQLite database.c                ó   — i | ]
}|j         |“ŒS r%   )Ústyle_id©rB   Úss     r'   ú
<dictcomp>zFtest_python_catalog_and_db_style_attributes_parity.<locals>.<dictcomp>Z   s   € ÐAÐAÐA 1�”˜QÐAÐAÐAr&   rq   )z·%(py7)s
{%(py7)s = %(py0)s(%(py5)s
{%(py5)s = %(py3)s
{%(py3)s = %(py1)s.keys
}()
})
} == %(py16)s
{%(py16)s = %(py9)s(%(py14)s
{%(py14)s = %(py12)s
{%(py12)s = %(py10)s.keys
}()
})
}Úsetrv   rt   )
r5   rJ   rK   Úpy5Úpy7Úpy9Úpy10Úpy12Úpy14Úpy16zassert %(py18)sÚpy18N)zR%(py2)s
{%(py2)s = %(py0)s.biome_code
} == %(py6)s
{%(py6)s = %(py4)s.biome_code
}Údb_sÚpy_s©r5   r6   r7   rL   ru   rO   )zL%(py2)s
{%(py2)s = %(py0)s.name_vi
} == %(py6)s
{%(py6)s = %(py4)s.name_vi
})zL%(py2)s
{%(py2)s = %(py0)s.name_en
} == %(py6)s
{%(py6)s = %(py4)s.name_en
})zZ%(py2)s
{%(py2)s = %(py0)s.theme_category
} == %(py6)s
{%(py6)s = %(py4)s.theme_category
})zd%(py2)s
{%(py2)s = %(py0)s.theme_category_name
} == %(py6)s
{%(py6)s = %(py4)s.theme_category_name
})z„%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.palette
}.floor
} == %(py10)s
{%(py10)s = %(py8)s
{%(py8)s = %(py6)s.palette
}.floor
})r5   r6   r7   rL   rO   r„   zassert %(py12)sr…   )z‚%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.palette
}.wall
} == %(py10)s
{%(py10)s = %(py8)s
{%(py8)s = %(py6)s.palette
}.wall
})z‚%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.palette
}.path
} == %(py10)s
{%(py10)s = %(py8)s
{%(py8)s = %(py6)s.palette
}.path
})z†%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.palette
}.liquid
} == %(py10)s
{%(py10)s = %(py8)s
{%(py8)s = %(py6)s.palette
}.liquid
})zˆ%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.palette
}.ambient
} == %(py10)s
{%(py10)s = %(py8)s
{%(py8)s = %(py6)s.palette
}.ambient
})z’%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.lighting
}.ambient_hex
} == %(py10)s
{%(py10)s = %(py8)s
{%(py8)s = %(py6)s.lighting
}.ambient_hex
})zÏ%(py9)s
{%(py9)s = %(py2)s
{%(py2)s = %(py0)s.approx
}(%(py7)s
{%(py7)s = %(py5)s
{%(py5)s = %(py3)s.lighting
}.fog_density
})
} == %(py15)s
{%(py15)s = %(py13)s
{%(py13)s = %(py11)s.lighting
}.fog_density
}Úpytest)	r5   r6   rK   r�   r‚   rƒ   Úpy11Úpy13Úpy15zassert %(py17)sÚpy17)zË%(py9)s
{%(py9)s = %(py2)s
{%(py2)s = %(py0)s.approx
}(%(py7)s
{%(py7)s = %(py5)s
{%(py5)s = %(py3)s.hazard
}.slow_factor
})
} == %(py15)s
{%(py15)s = %(py13)s
{%(py13)s = %(py11)s.hazard
}.slow_factor
})z~%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.hazard
}.dps
} == %(py10)s
{%(py10)s = %(py8)s
{%(py8)s = %(py6)s.hazard
}.dps
})zV%(py2)s
{%(py2)s = %(py0)s.legacy_alias
} == %(py6)s
{%(py6)s = %(py4)s.legacy_alias
})"rx   rw   ÚMAP_STYLES_BY_IDÚkeysr€   rR   r_   rT   rU   rV   rW   rX   rY   ÚitemsÚ
biome_codeÚname_viÚname_enÚtheme_categoryÚtheme_category_nameÚpaletteÚfloorÚwallÚpathÚliquidÚambientÚlightingÚambient_hexrŒ   ÚapproxÚfog_densityÚhazardÚslow_factorÚdpsÚlegacy_alias)r-   rv   rt   rh   rj   Ú@py_assert6Ú@py_assert11Ú@py_assert13Ú@py_assert15Ú@py_assert8Ú@py_format17Ú@py_format19Ús_idrŠ   r‰   rc   ri   rd   rk   rl   Ú@py_assert7Ú@py_assert9Ú@py_format11Ú@py_format13Ú@py_assert12Ú@py_assert14Ú@py_assert10Ú@py_format16Ú@py_format18s                                r'   Ú2test_python_catalog_and_db_style_attributes_parityr¸   X   s   € àAÐA¨
×(>Ò(>Ñ(@Ô(@ÐAÑAÔA€IÝÔ+€IàŒ~Ð9ˆ~ˆ~ÑÔÐ9�3ÐÑ Ô Ð9¨	¬Ð9¨¨Ñ(8Ô(8Ð9¥CÐ(8Ñ$9Ô$9Ð9Ð Ð$9Ò9Ð9Ð9Ñ9Õ9Ô9Ð9Ð9Ð9Ð9Ð Ð$9Ð9Ñ9Ô9Ð9Õ9Ô9Ñ9Ô9Ð9Ð9Õ9Ô9�3Ñ9Ô9Ð9Õ9Ô9�3Ñ9Ô9Ð9Ð9Ð9Õ9Ô9Ñ9Ô9Ð9Ð9Õ9Ô9ˆyÑ9Ô9Ð9Õ9Ô9ˆyÑ9Ô9Ð9Ð9Õ9Ô9ˆ~Ñ9Ô9Õ9Ô9ÐÑ9Ô9Õ9Ô9Ð Ñ9Ô9Ð9Õ9Ô9Ñ9Ô9Ð9Ð9Õ9Ô9¥CÑ9Ô9Ð9Õ9Ô9¥CÑ9Ô9Ð9Ð9Ð9Õ9Ô9Ñ9Ô9Ð9Ð9Õ9Ô9¨	Ñ9Ô9Ð9Õ9Ô9¨	Ñ9Ô9Ð9Ð9Õ9Ô9¨Ñ9Ô9Õ9Ô9Ð(8Ñ9Ô9Õ9Ô9Ð$9Ñ9Ô9Ð9Ð9Ñ9Ð9Ð9Ð9Ð9Ð9Ñ9Ð9Õ9Õ9Ô9Ð9Ñ9Ô9Ñ9Ô9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9à—o’oÑ'Ô'ð 6ñ 6‰
ˆˆdØ˜ŒˆØŒÐ1 $¤/Ð1ˆ /Ò1Ð1Ð1Ð1Õ1Ô1Ð1Ð1Ð1Ð1ˆ /Ð1Ñ1Ô1Ð1Õ1Ô1Ñ1Ô1Ð1Ð1Õ1Ô1ˆtÑ1Ô1Ð1Õ1Ô1ˆtÑ1Ô1Ð1Ð1Õ1Ô1ˆÑ1Ô1Ð1Õ1Ô1Ñ1Ô1Ð1Ð1Õ1Ô1 $Ñ1Ô1Ð1Õ1Ô1 $Ñ1Ô1Ð1Ð1Õ1Ô1 /Ñ1Ô1Ð1Ð1Ñ1Ð1Ð1Ð1Ð1Ð1Ñ1Ð1Õ1Õ1Ô1Ð1Ñ1Ô1Ñ1Ô1Ð1Ð1Ð1Ð1Ð1Ð1Ð1ØŒ|Ð+˜tœ|Ð+ˆ|˜|Ò+Ð+Ð+Ð+Õ+Ô+Ð+Ð+Ð+Ð+ˆ|˜|Ð+Ñ+Ô+Ð+Õ+Ô+Ñ+Ô+Ð+Ð+Õ+Ô+ˆtÑ+Ô+Ð+Õ+Ô+ˆtÑ+Ô+Ð+Ð+Õ+Ô+ˆ|Ñ+Ô+Ð+Õ+Ô+Ñ+Ô+Ð+Ð+Õ+Ô+˜tÑ+Ô+Ð+Õ+Ô+˜tÑ+Ô+Ð+Ð+Õ+Ô+˜|Ñ+Ô+Ð+Ð+Ñ+Ð+Ð+Ð+Ð+Ð+Ñ+Ð+Õ+Õ+Ô+Ð+Ñ+Ô+Ñ+Ô+Ð+Ð+Ð+Ð+Ð+Ð+Ð+ØŒ|Ð+˜tœ|Ð+ˆ|˜|Ò+Ð+Ð+Ð+Õ+Ô+Ð+Ð+Ð+Ð+ˆ|˜|Ð+Ñ+Ô+Ð+Õ+Ô+Ñ+Ô+Ð+Ð+Õ+Ô+ˆtÑ+Ô+Ð+Õ+Ô+ˆtÑ+Ô+Ð+Ð+Õ+Ô+ˆ|Ñ+Ô+Ð+Õ+Ô+Ñ+Ô+Ð+Ð+Õ+Ô+˜tÑ+Ô+Ð+Õ+Ô+˜tÑ+Ô+Ð+Ð+Õ+Ô+˜|Ñ+Ô+Ð+Ð+Ñ+Ð+Ð+Ð+Ð+Ð+Ñ+Ð+Õ+Õ+Ô+Ð+Ñ+Ô+Ñ+Ô+Ð+Ð+Ð+Ð+Ð+Ð+Ð+ØÔ"Ð9 dÔ&9Ð9Ð"Ð&9Ò9Ð9Ð9Ð9Õ9Ô9Ð9Ð9Ð9Ð9Ð"Ð&9Ð9Ñ9Ô9Ð9Õ9Ô9Ñ9Ô9Ð9Ð9Õ9Ô9ˆtÑ9Ô9Ð9Õ9Ô9ˆtÑ9Ô9Ð9Ð9Õ9Ô9Ð"Ñ9Ô9Ð9Õ9Ô9Ñ9Ô9Ð9Ð9Õ9Ô9 dÑ9Ô9Ð9Õ9Ô9 dÑ9Ô9Ð9Ð9Õ9Ô9Ð&9Ñ9Ô9Ð9Ð9Ñ9Ð9Ð9Ð9Ð9Ð9Ñ9Ð9Õ9Õ9Ô9Ð9Ñ9Ô9Ñ9Ô9Ð9Ð9Ð9Ð9Ð9Ð9Ð9ØÔ'ÐC¨4Ô+CÐCÐ'Ð+CÒCÐCÐCÐCÕCÔCÐCÐCÐCÐCÐ'Ð+CÐCÑCÔCÐCÕCÔCÑCÔCÐCÐCÕCÔCˆtÑCÔCÐCÕCÔCˆtÑCÔCÐCÐCÕCÔCÐ'ÑCÔCÐCÕCÔCÑCÔCÐCÐCÕCÔC¨4ÑCÔCÐCÕCÔC¨4ÑCÔCÐCÐCÕCÔCÐ+CÑCÔCÐCÐCÑCÐCÐCÐCÐCÐCÑCÐCÕCÕCÔCÐCÑCÔCÑCÔCÐCÐCÐCÐCÐCÐCÐCØŒ|Ð7ˆ|Ô!Ð7 T¤\Ð7 \Ô%7Ð7Ð!Ð%7Ò7Ð7Ð7Ñ7Õ7Ô7Ð7Ð7Ð7Ð7Ð!Ð%7Ð7Ñ7Ô7Ð7Õ7Ô7Ñ7Ô7Ð7Ð7Õ7Ô7ˆtÑ7Ô7Ð7Õ7Ô7ˆtÑ7Ô7Ð7Ð7Õ7Ô7ˆ|Ñ7Ô7Õ7Ô7Ð!Ñ7Ô7Ð7Õ7Ô7Ñ7Ô7Ð7Ð7Õ7Ô7 TÑ7Ô7Ð7Õ7Ô7 TÑ7Ô7Ð7Ð7Õ7Ô7 \Ñ7Ô7Õ7Ô7Ð%7Ñ7Ô7Ð7Ð7Ñ7Ð7Ð7Ð7Ð7Ð7Ñ7Ð7Õ7Õ7Ô7Ð7Ñ7Ô7Ñ7Ô7Ð7Ð7Ð7Ð7Ð7Ð7Ð7Ð7Ð7Ð7Ð7ØŒ|Ð5ˆ|Ô Ð5 D¤LÐ5 LÔ$5Ð5Ð Ð$5Ò5Ð5Ð5Ñ5Õ5Ô5Ð5Ð5Ð5Ð5Ð Ð$5Ð5Ñ5Ô5Ð5Õ5Ô5Ñ5Ô5Ð5Ð5Õ5Ô5ˆtÑ5Ô5Ð5Õ5Ô5ˆtÑ5Ô5Ð5Ð5Õ5Ô5ˆ|Ñ5Ô5Õ5Ô5Ð Ñ5Ô5Ð5Õ5Ô5Ñ5Ô5Ð5Ð5Õ5Ô5 DÑ5Ô5Ð5Õ5Ô5 DÑ5Ô5Ð5Ð5Õ5Ô5 LÑ5Ô5Õ5Ô5Ð$5Ñ5Ô5Ð5Ð5Ñ5Ð5Ð5Ð5Ð5Ð5Ñ5Ð5Õ5Õ5Ô5Ð5Ñ5Ô5Ñ5Ô5Ð5Ð5Ð5Ð5Ð5Ð5Ð5Ð5Ð5Ð5Ð5ØŒ|Ð5ˆ|Ô Ð5 D¤LÐ5 LÔ$5Ð5Ð Ð$5Ò5Ð5Ð5Ñ5Õ5Ô5Ð5Ð5Ð5Ð5Ð Ð$5Ð5Ñ5Ô5Ð5Õ5Ô5Ñ5Ô5Ð5Ð5Õ5Ô5ˆtÑ5Ô5Ð5Õ5Ô5ˆtÑ5Ô5Ð5Ð5Õ5Ô5ˆ|Ñ5Ô5Õ5Ô5Ð Ñ5Ô5Ð5Õ5Ô5Ñ5Ô5Ð5Ð5Õ5Ô5 DÑ5Ô5Ð5Õ5Ô5 DÑ5Ô5Ð5Ð5Õ5Ô5 LÑ5Ô5Õ5Ô5Ð$5Ñ5Ô5Ð5Ð5Ñ5Ð5Ð5Ð5Ð5Ð5Ñ5Ð5Õ5Õ5Ô5Ð5Ñ5Ô5Ñ5Ô5Ð5Ð5Ð5Ð5Ð5Ð5Ð5Ð5Ð5Ð5Ð5ØŒ|Ð9ˆ|Ô"Ð9 d¤lÐ9 lÔ&9Ð9Ð"Ð&9Ò9Ð9Ð9Ñ9Õ9Ô9Ð9Ð9Ð9Ð9Ð"Ð&9Ð9Ñ9Ô9Ð9Õ9Ô9Ñ9Ô9Ð9Ð9Õ9Ô9ˆtÑ9Ô9Ð9Õ9Ô9ˆtÑ9Ô9Ð9Ð9Õ9Ô9ˆ|Ñ9Ô9Õ9Ô9Ð"Ñ9Ô9Ð9Õ9Ô9Ñ9Ô9Ð9Ð9Õ9Ô9 dÑ9Ô9Ð9Õ9Ô9 dÑ9Ô9Ð9Ð9Õ9Ô9 lÑ9Ô9Õ9Ô9Ð&9Ñ9Ô9Ð9Ð9Ñ9Ð9Ð9Ð9Ð9Ð9Ñ9Ð9Õ9Õ9Ô9Ð9Ñ9Ô9Ñ9Ô9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9ØŒ|Ð;ˆ|Ô#Ð; t¤|Ð; |Ô';Ð;Ð#Ð';Ò;Ð;Ð;Ñ;Õ;Ô;Ð;Ð;Ð;Ð;Ð#Ð';Ð;Ñ;Ô;Ð;Õ;Ô;Ñ;Ô;Ð;Ð;Õ;Ô;ˆtÑ;Ô;Ð;Õ;Ô;ˆtÑ;Ô;Ð;Ð;Õ;Ô;ˆ|Ñ;Ô;Õ;Ô;Ð#Ñ;Ô;Ð;Õ;Ô;Ñ;Ô;Ð;Ð;Õ;Ô; tÑ;Ô;Ð;Õ;Ô; tÑ;Ô;Ð;Ð;Õ;Ô; |Ñ;Ô;Õ;Ô;Ð';Ñ;Ô;Ð;Ð;Ñ;Ð;Ð;Ð;Ð;Ð;Ñ;Ð;Õ;Õ;Ô;Ð;Ñ;Ô;Ñ;Ô;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;ØŒ}ÐEˆ}Ô(ÐE¨D¬MÐE¨MÔ,EÐEÐ(Ð,EÒEÐEÐEÑEÕEÔEÐEÐEÐEÐEÐ(Ð,EÐEÑEÔEÐEÕEÔEÑEÔEÐEÐEÕEÔEˆtÑEÔEÐEÕEÔEˆtÑEÔEÐEÐEÕEÔEˆ}ÑEÔEÕEÔEÐ(ÑEÔEÐEÕEÔEÑEÔEÐEÐEÕEÔE¨DÑEÔEÐEÕEÔE¨DÑEÔEÐEÐEÕEÔE¨MÑEÔEÕEÔEÐ,EÑEÔEÐEÐEÑEÐEÐEÐEÐEÐEÑEÐEÕEÕEÔEÐEÑEÔEÑEÔEÐEÐEÐEÐEÐEÐEÐEÐEÐEÐEÐEÝŒ}ÐT˜Tœ]ÐT˜]Ô6ÐTˆ}ˆ}Ð6Ñ7Ô7ÐT¸4¼=ÐT¸=Ô;TÐTÐ7Ð;TÒTÐTÐTÑTÕTÔTÐTÐTÐTÐTÐ7Ð;TÐTÑTÔTÐTÕTÔTÑTÔTÐTÐTÕTÔT�vÑTÔTÐTÕTÔT�vÑTÔTÐTÐTÕTÔTˆ}ÑTÔTÐTÕTÔTÑTÔTÐTÐTÕTÔT˜TÑTÔTÐTÕTÔT˜TÑTÔTÐTÐTÕTÔT˜]ÑTÔTÕTÔTÐ6ÑTÔTÕTÔTÐ7ÑTÔTÐTÕTÔTÑTÔTÐTÐTÕTÔT¸4ÑTÔTÐTÕTÔT¸4ÑTÔTÐTÐTÕTÔT¸=ÑTÔTÕTÔTÐ;TÑTÔTÐTÐTÑTÐTÐTÐTÐTÐTÑTÐTÕTÕTÔTÐTÑTÔTÑTÔTÐTÐTÐTÐTÐTÐTÐTÐTÐTÐTÐTÐTÐTÐTÐTÝŒ}ÐP˜Tœ[ÐP˜[Ô4ÐPˆ}ˆ}Ð4Ñ5Ô5ÐP¸¼ÐP¸Ô9PÐPÐ5Ð9PÒPÐPÐPÑPÕPÔPÐPÐPÐPÐPÐ5Ð9PÐPÑPÔPÐPÕPÔPÑPÔPÐPÐPÕPÔP�vÑPÔPÐPÕPÔP�vÑPÔPÐPÐPÕPÔPˆ}ÑPÔPÐPÕPÔPÑPÔPÐPÐPÕPÔP˜TÑPÔPÐPÕPÔP˜TÑPÔPÐPÐPÕPÔP˜[ÑPÔPÕPÔPÐ4ÑPÔPÕPÔPÐ5ÑPÔPÐPÕPÔPÑPÔPÐPÐPÕPÔP¸ÑPÔPÐPÕPÔP¸ÑPÔPÐPÐPÕPÔP¸ÑPÔPÕPÔPÐ9PÑPÔPÐPÐPÑPÐPÐPÐPÐPÐPÑPÐPÕPÕPÔPÐPÑPÔPÑPÔPÐPÐPÐPÐPÐPÐPÐPÐPÐPÐPÐPÐPÐPÐPÐPØŒ{Ð1ˆ{ŒÐ1 $¤+Ð1 +¤/Ð1ˆ /Ò1Ð1Ð1Ñ1Õ1Ô1Ð1Ð1Ð1Ð1ˆ /Ð1Ñ1Ô1Ð1Õ1Ô1Ñ1Ô1Ð1Ð1Õ1Ô1ˆtÑ1Ô1Ð1Õ1Ô1ˆtÑ1Ô1Ð1Ð1Õ1Ô1ˆ{Ñ1Ô1Õ1Ô1ˆÑ1Ô1Ð1Õ1Ô1Ñ1Ô1Ð1Ð1Õ1Ô1 $Ñ1Ô1Ð1Õ1Ô1 $Ñ1Ô1Ð1Ð1Õ1Ô1 +Ñ1Ô1Õ1Ô1 /Ñ1Ô1Ð1Ð1Ñ1Ð1Ð1Ð1Ð1Ð1Ñ1Ð1Õ1Õ1Ô1Ð1Ñ1Ô1Ñ1Ô1Ð1Ð1Ð1Ð1Ð1Ð1Ð1Ð1Ð1Ð1Ð1ØÔ Ð5 DÔ$5Ð5Ð Ð$5Ò5Ð5Ð5Ð5Õ5Ô5Ð5Ð5Ð5Ð5Ð Ð$5Ð5Ñ5Ô5Ð5Õ5Ô5Ñ5Ô5Ð5Ð5Õ5Ô5ˆtÑ5Ô5Ð5Õ5Ô5ˆtÑ5Ô5Ð5Ð5Õ5Ô5Ð Ñ5Ô5Ð5Õ5Ô5Ñ5Ô5Ð5Ð5Õ5Ô5 DÑ5Ô5Ð5Õ5Ô5 DÑ5Ô5Ð5Ð5Õ5Ô5Ð$5Ñ5Ô5Ð5Ð5Ñ5Ð5Ð5Ð5Ð5Ð5Ñ5Ð5Õ5Õ5Ô5Ð5Ñ5Ô5Ñ5Ô5Ð5Ð5Ð5Ð5Ð5Ð5Ð5Ñ5ð!6ð 6r&   c                ó6  — t          j        ¦   «         D �]}t          j        |¦  «        }|                      |¦  «        }t          |¦  «        }d}||k    }|sòt	          j        d|fd||f¦  «        dt          j        ¦   «         v st	          j        t          ¦  «        rt	          j	        t          ¦  «        nddt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        t	          j	        |¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚d	x}x}}t          |¦  «        }d}||k    }|sòt	          j        d|fd||f¦  «        dt          j        ¦   «         v st	          j        t          ¦  «        rt	          j	        t          ¦  «        ndd
t          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        nd
t	          j	        |¦  «        t	          j	        |¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚d	x}x}}t          ||¦  «        D �]\  }	}
|	j        }|
j        }||k    }|sèt	          j        d|fd||f¦  «        dt          j        ¦   «         v st	          j        |	¦  «        rt	          j	        |	¦  «        ndt	          j	        |¦  «        dt          j        ¦   «         v st	          j        |
¦  «        rt	          j	        |
¦  «        ndt	          j	        |¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚d	x}x}}|	j        }|
j        }||k    }|sèt	          j        d|fd||f¦  «        dt          j        ¦   «         v st	          j        |	¦  «        rt	          j	        |	¦  «        ndt	          j	        |¦  «        dt          j        ¦   «         v st	          j        |
¦  «        rt	          j	        |
¦  «        ndt	          j	        |¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚d	x}x}}|	j        }|
j        }||k    }|sèt	          j        d|fd||f¦  «        dt          j        ¦   «         v st	          j        |	¦  «        rt	          j	        |	¦  «        ndt	          j	        |¦  «        dt          j        ¦   «         v st	          j        |
¦  «        rt	          j	        |
¦  «        ndt	          j	        |¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚d	x}x}}|	j        }|
j        }||k    }|sèt	          j        d|fd||f¦  «        dt          j        ¦   «         v st	          j        |	¦  «        rt	          j	        |	¦  «        ndt	          j	        |¦  «        dt          j        ¦   «         v st	          j        |
¦  «        rt	          j	        |
¦  «        ndt	          j	        |¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚d	x}x}}�Œt          j        |¦  «        }|                      |¦  «        }t          |¦  «        }d}||k    }|sòt	          j        d|fd||f¦  «        dt          j        ¦   «         v st	          j        t          ¦  «        rt	          j	        t          ¦  «        nddt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        t	          j	        |¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚d	x}x}}t          |¦  «        }t          |¦  «        }||k    }|�sxt	          j        d|fd||f¦  «        dt          j        ¦   «         v st	          j        t          ¦  «        rt	          j	        t          ¦  «        nddt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        dt          j        ¦   «         v st	          j        t          ¦  «        rt	          j	        t          ¦  «        nddt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚d	x}x}}t          ||¦  «        D �]œ\  }}|j        }|j        }||k    }|sèt	          j        d|fd||f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚d	x}x}}|j        }|j        }||k    }|sèt	          j        d|fd||f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚d	x}x}}t(          j        }|j        } ||¦  «        }|j        }||k    }|�sVt	          j        d|fd||f¦  «        d t          j        ¦   «         v st	          j        t(          ¦  «        rt	          j	        t(          ¦  «        nd t	          j	        |¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        t	          j	        |¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        d!œz  }d"d#|iz  }t          t	          j        |¦  «        ¦  «        ‚d	x}x}x}x}}�Œž�Œd	S )$zPVerify tile mappings and props count and attributes match between Python and DB.é   rq   rs   rG   Úpy_tilesrI   ru   rO   NÚdb_tiles)zP%(py2)s
{%(py2)s = %(py0)s.tile_code
} == %(py6)s
{%(py6)s = %(py4)s.tile_code
}ÚptÚdtr‹   )zZ%(py2)s
{%(py2)s = %(py0)s.tile_type_name
} == %(py6)s
{%(py6)s = %(py4)s.tile_type_name
})zV%(py2)s
{%(py2)s = %(py0)s.texture_path
} == %(py6)s
{%(py6)s = %(py4)s.texture_path
})zp%(py2)s
{%(py2)s = %(py0)s.procedural_fallback_color
} == %(py6)s
{%(py6)s = %(py4)s.procedural_fallback_color
}r   )ú>=)z0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} >= %(py6)sÚpy_props)zN%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py8)s
{%(py8)s = %(py5)s(%(py6)s)
}Údb_props)r5   rJ   rK   r�   rL   rO   zassert %(py10)sr„   )zL%(py2)s
{%(py2)s = %(py0)s.prop_id
} == %(py6)s
{%(py6)s = %(py4)s.prop_id
}ÚppÚdp)zZ%(py2)s
{%(py2)s = %(py0)s.placement_rule
} == %(py6)s
{%(py6)s = %(py4)s.placement_rule
})z’%(py7)s
{%(py7)s = %(py2)s
{%(py2)s = %(py0)s.approx
}(%(py5)s
{%(py5)s = %(py3)s.spawn_weight
})
} == %(py11)s
{%(py11)s = %(py9)s.spawn_weight
}rŒ   )r5   r6   rK   r�   r‚   rƒ   r�   úassert %(py13)srŽ   )rw   Úlist_available_stylesÚget_tiles_for_stylerG   rR   r_   rT   rU   rV   rW   rX   rY   ÚzipÚ	tile_codeÚtile_type_nameÚtexture_pathÚprocedural_fallback_colorÚget_props_for_styleÚprop_idÚplacement_rulerŒ   r¡   Úspawn_weight)r-   r®   r»   r¼   rh   ri   rj   rk   rl   r½   r¾   rc   rd   rÀ   rÁ   r¯   r±   rÂ   rÃ   r§   rµ   r«   Ú@py_format12Ú@py_format14s                           r'   Ú1test_python_catalog_and_db_tiles_and_props_parityrÒ   r   sà  € åÔ0Ñ2Ô2ð Eñ EˆÝÔ1°$Ñ7Ô7ˆØ×1Ò1°$Ñ7Ô7ˆÝ�8‰}Œ}Ð" Ð"ˆ} Ò"Ð"Ð"Ð"Õ"Ô"Ð"Ð"Ð"Ð"ˆ} Ð"Ñ"Ô"Ð"Õ"Ô"Ñ"Ô"Ð"Ð"Õ"Ô"�sÑ"Ô"Ð"Õ"Ô"�sÑ"Ô"Ð"Ð"Ð"Õ"Ô"Ñ"Ô"Ð"Ð"Õ"Ô"�8Ñ"Ô"Ð"Õ"Ô"�8Ñ"Ô"Ð"Ð"Õ"Ô"ˆ}Ñ"Ô"Õ"Ô" Ñ"Ô"Ð"Ð"Ñ"Ð"Ð"Ð"Ð"Ð"Ñ"Ð"Õ"Õ"Ô"Ð"Ñ"Ô"Ñ"Ô"Ð"Ð"Ð"Ð"Ð"Ð"Ð"Ý�8‰}Œ}Ð" Ð"ˆ} Ò"Ð"Ð"Ð"Õ"Ô"Ð"Ð"Ð"Ð"ˆ} Ð"Ñ"Ô"Ð"Õ"Ô"Ñ"Ô"Ð"Ð"Õ"Ô"�sÑ"Ô"Ð"Õ"Ô"�sÑ"Ô"Ð"Ð"Ð"Õ"Ô"Ñ"Ô"Ð"Ð"Õ"Ô"�8Ñ"Ô"Ð"Õ"Ô"�8Ñ"Ô"Ð"Ð"Õ"Ô"ˆ}Ñ"Ô"Õ"Ô" Ñ"Ô"Ð"Ð"Ñ"Ð"Ð"Ð"Ð"Ð"Ñ"Ð"Õ"Õ"Ô"Ð"Ñ"Ô"Ñ"Ô"Ð"Ð"Ð"Ð"Ð"Ð"Ð"Ý˜( HÑ-Ô-ð 	Pñ 	P‰FˆB�Ø”<Ð/ 2¤<Ð/�< <Ò/Ð/Ð/Ð/Õ/Ô/Ð/Ð/Ð/Ð/�< <Ð/Ñ/Ô/Ð/Õ/Ô/Ñ/Ô/Ð/Ð/Õ/Ô/�2Ñ/Ô/Ð/Õ/Ô/�2Ñ/Ô/Ð/Ð/Õ/Ô/�<Ñ/Ô/Ð/Õ/Ô/Ñ/Ô/Ð/Ð/Õ/Ô/ 2Ñ/Ô/Ð/Õ/Ô/ 2Ñ/Ô/Ð/Ð/Õ/Ô/ <Ñ/Ô/Ð/Ð/Ñ/Ð/Ð/Ð/Ð/Ð/Ñ/Ð/Õ/Õ/Ô/Ð/Ñ/Ô/Ñ/Ô/Ð/Ð/Ð/Ð/Ð/Ð/Ð/ØÔ$Ð9¨Ô(9Ð9Ð$Ð(9Ò9Ð9Ð9Ð9Õ9Ô9Ð9Ð9Ð9Ð9Ð$Ð(9Ð9Ñ9Ô9Ð9Õ9Ô9Ñ9Ô9Ð9Ð9Õ9Ô9�2Ñ9Ô9Ð9Õ9Ô9�2Ñ9Ô9Ð9Ð9Õ9Ô9Ð$Ñ9Ô9Ð9Õ9Ô9Ñ9Ô9Ð9Ð9Õ9Ô9¨Ñ9Ô9Ð9Õ9Ô9¨Ñ9Ô9Ð9Ð9Õ9Ô9Ð(9Ñ9Ô9Ð9Ð9Ñ9Ð9Ð9Ð9Ð9Ð9Ñ9Ð9Õ9Õ9Ô9Ð9Ñ9Ô9Ñ9Ô9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ø”?Ð5 b¤oÐ5�? oÒ5Ð5Ð5Ð5Õ5Ô5Ð5Ð5Ð5Ð5�? oÐ5Ñ5Ô5Ð5Õ5Ô5Ñ5Ô5Ð5Ð5Õ5Ô5�2Ñ5Ô5Ð5Õ5Ô5�2Ñ5Ô5Ð5Ð5Õ5Ô5�?Ñ5Ô5Ð5Õ5Ô5Ñ5Ô5Ð5Ð5Õ5Ô5 bÑ5Ô5Ð5Õ5Ô5 bÑ5Ô5Ð5Ð5Õ5Ô5 oÑ5Ô5Ð5Ð5Ñ5Ð5Ð5Ð5Ð5Ð5Ñ5Ð5Õ5Õ5Ô5Ð5Ñ5Ô5Ñ5Ô5Ð5Ð5Ð5Ð5Ð5Ð5Ð5ØÔ/ÐO°2Ô3OÐOÐ/Ð3OÒOÐOÐOÐOÕOÔOÐOÐOÐOÐOÐ/Ð3OÐOÑOÔOÐOÕOÔOÑOÔOÐOÐOÕOÔO�2ÑOÔOÐOÕOÔO�2ÑOÔOÐOÐOÕOÔOÐ/ÑOÔOÐOÕOÔOÑOÔOÐOÐOÕOÔO°2ÑOÔOÐOÕOÔO°2ÑOÔOÐOÐOÕOÔOÐ3OÑOÔOÐOÐOÑOÐOÐOÐOÐOÐOÑOÐOÕOÕOÔOÐOÑOÔOÑOÔOÐOÐOÐOÐOÐOÐOÐOÑOåÔ1°$Ñ7Ô7ˆØ×1Ò1°$Ñ7Ô7ˆÝ�8‰}Œ}Ð! Ð!ˆ} Ò!Ð!Ð!Ð!Õ!Ô!Ð!Ð!Ð!Ð!ˆ} Ð!Ñ!Ô!Ð!Õ!Ô!Ñ!Ô!Ð!Ð!Õ!Ô!�sÑ!Ô!Ð!Õ!Ô!�sÑ!Ô!Ð!Ð!Ð!Õ!Ô!Ñ!Ô!Ð!Ð!Õ!Ô!�8Ñ!Ô!Ð!Õ!Ô!�8Ñ!Ô!Ð!Ð!Õ!Ô!ˆ}Ñ!Ô!Õ!Ô! Ñ!Ô!Ð!Ð!Ñ!Ð!Ð!Ð!Ð!Ð!Ñ!Ð!Õ!Õ!Ô!Ð!Ñ!Ô!Ñ!Ô!Ð!Ð!Ð!Ð!Ð!Ð!Ð!Ý�8‰}Œ}Ð-¥ H¡¤Ð-ˆ} Ò-Ð-Ð-Ñ-Õ-Ô-Ð-Ð-Ð-Ð-ˆ} Ð-Ñ-Ô-Ð-Õ-Ô-Ñ-Ô-Ð-Ð-Õ-Ô-�sÑ-Ô-Ð-Õ-Ô-�sÑ-Ô-Ð-Ð-Ð-Õ-Ô-Ñ-Ô-Ð-Ð-Õ-Ô-�8Ñ-Ô-Ð-Õ-Ô-�8Ñ-Ô-Ð-Ð-Õ-Ô-ˆ}Ñ-Ô-Ð-Õ-Ô-Ñ-Ô-Ð-Ð-Õ-Ô-¥Ñ-Ô-Ð-Õ-Ô-¥Ñ-Ô-Ð-Ð-Ð-Õ-Ô-Ñ-Ô-Ð-Ð-Õ-Ô- HÑ-Ô-Ð-Õ-Ô- HÑ-Ô-Ð-Ð-Õ-Ô- Ñ-Ô-Ð-Ð-Ñ-Ð-Ð-Ð-Ð-Ð-Ñ-Ð-Õ-Õ-Ô-Ð-Ñ-Ô-Ñ-Ô-Ð-Ð-Ð-Ð-Ð-Ð-Ð-Ý˜( HÑ-Ô-ð 	Eñ 	E‰FˆB�Ø”:Ð+ ¤Ð+�: Ò+Ð+Ð+Ð+Õ+Ô+Ð+Ð+Ð+Ð+�: Ð+Ñ+Ô+Ð+Õ+Ô+Ñ+Ô+Ð+Ð+Õ+Ô+�2Ñ+Ô+Ð+Õ+Ô+�2Ñ+Ô+Ð+Ð+Õ+Ô+�:Ñ+Ô+Ð+Õ+Ô+Ñ+Ô+Ð+Ð+Õ+Ô+ Ñ+Ô+Ð+Õ+Ô+ Ñ+Ô+Ð+Ð+Õ+Ô+ Ñ+Ô+Ð+Ð+Ñ+Ð+Ð+Ð+Ð+Ð+Ñ+Ð+Õ+Õ+Ô+Ð+Ñ+Ô+Ñ+Ô+Ð+Ð+Ð+Ð+Ð+Ð+Ð+ØÔ$Ð9¨Ô(9Ð9Ð$Ð(9Ò9Ð9Ð9Ð9Õ9Ô9Ð9Ð9Ð9Ð9Ð$Ð(9Ð9Ñ9Ô9Ð9Õ9Ô9Ñ9Ô9Ð9Ð9Õ9Ô9�2Ñ9Ô9Ð9Õ9Ô9�2Ñ9Ô9Ð9Ð9Õ9Ô9Ð$Ñ9Ô9Ð9Õ9Ô9Ñ9Ô9Ð9Ð9Õ9Ô9¨Ñ9Ô9Ð9Õ9Ô9¨Ñ9Ô9Ð9Ð9Õ9Ô9Ð(9Ñ9Ô9Ð9Ð9Ñ9Ð9Ð9Ð9Ð9Ð9Ñ9Ð9Õ9Õ9Ô9Ð9Ñ9Ô9Ñ9Ô9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ý”=ÐD ¤ÐD�=�= Ñ1Ô1ÐD°R´_ÐDÐ1°_ÒDÐDÐDÑDÕDÔDÐDÐDÐDÐDÐ1°_ÐDÑDÔDÐDÕDÔDÑDÔDÐDÐDÕDÔD•6ÑDÔDÐDÕDÔD•6ÑDÔDÐDÐDÕDÔD�=ÑDÔDÐDÕDÔDÑDÔDÐDÐDÕDÔD ÑDÔDÐDÕDÔD ÑDÔDÐDÐDÕDÔD ÑDÔDÕDÔDÐ1ÑDÔDÐDÕDÔDÑDÔDÐDÐDÕDÔD°RÑDÔDÐDÕDÔD°RÑDÔDÐDÐDÕDÔD°_ÑDÔDÐDÐDÑDÐDÐDÐDÐDÐDÑDÐDÕDÕDÔDÐDÑDÔDÑDÔDÐDÐDÐDÐDÐDÐDÐDÐDÐDÐDÐDÑDñ	EðEð Er&   rm   c                óö  — | d         }| d         }t          |¦  «        }d}||k    }|sòt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        t           ¦  «        rt          j        t           ¦  «        nddt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }d	d
|iz  }t          t          j        |¦  «        ¦  «        ‚dx}x}}t          |¦  «        }d}||k    }|sòt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        t           ¦  «        rt          j        t           ¦  «        nddt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }d	d
|iz  }t          t          j        |¦  «        ¦  «        ‚dx}x}}|j	        } |¦   «         }t          |¦  «        }t          j        }	|	j	        }
 |
¦   «         }t          |¦  «        }||k    }|�sát          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        nddt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dt          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        nddt          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        ndt          j        |	¦  «        t          j        |
¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚dx}x}x}x}x}	x}
x}}dS )zMVerify that client JS catalog defines exactly 30 styles and 30 code mappings.Ú
map_stylesÚcode_to_stylerp   rq   rs   rG   Ú	js_stylesrI   ru   rO   NÚjs_codes)zß%(py7)s
{%(py7)s = %(py0)s(%(py5)s
{%(py5)s = %(py3)s
{%(py3)s = %(py1)s.keys
}()
})
} == %(py18)s
{%(py18)s = %(py9)s(%(py16)s
{%(py16)s = %(py14)s
{%(py14)s = %(py12)s
{%(py12)s = %(py10)s.MAP_STYLES_BY_ID
}.keys
}()
})
}r€   rw   )r5   rJ   rK   r�   r‚   rƒ   r„   r…   r†   r‡   rˆ   zassert %(py20)sÚpy20)rG   rR   r_   rT   rU   rV   rW   rX   rY   r’   r€   rw   r‘   )rm   rÖ   r×   rh   ri   rj   rk   rl   r§   r¨   r©   rª   Ú@py_assert17r«   r­   Ú@py_format21s                   r'   Ú$test_js_catalog_style_count_and_keysrÛ   ‰   s�  € à Ô-€IØ˜Ô/€Håˆy‰>Œ>Ð˜RÐˆ>˜RÒÐÐÐÕÔÐÐÐÐˆ>˜RÐÑÔÐÕÔÑÔÐÐÕÔ�3ÑÔÐÕÔ�3ÑÔÐÐÐÕÔÑÔÐÐÕÔˆyÑÔÐÕÔˆyÑÔÐÐÕÔˆ>ÑÔÕÔ˜RÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÐÐÝˆx‰=Œ=Ð˜BÐˆ=˜BÒÐÐÐÕÔÐÐÐÐˆ=˜BÐÑÔÐÕÔÑÔÐÐÕÔ�3ÑÔÐÕÔ�3ÑÔÐÐÐÕÔÑÔÐÐÕÔˆxÑÔÐÕÔˆxÑÔÐÐÕÔˆ=ÑÔÕÔ˜BÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÐÐØŒ~ÐKˆ~ˆ~ÑÔÐK�3ÐÑ Ô ÐK­
Ô(CÐKÐ(CÔ(HÐKÐ(HÐ(HÑ(JÔ(JÐK¥CÐ(JÑ$KÔ$KÐKÐ Ð$KÒKÐKÐKÑKÕKÔKÐKÐKÐKÐKÐ Ð$KÐKÑKÔKÐKÕKÔKÑKÔKÐKÐKÕKÔK�3ÑKÔKÐKÕKÔK�3ÑKÔKÐKÐKÐKÕKÔKÑKÔKÐKÐKÕKÔKˆyÑKÔKÐKÕKÔKˆyÑKÔKÐKÐKÕKÔKˆ~ÑKÔKÕKÔKÐÑKÔKÕKÔKÐ ÑKÔKÐKÕKÔKÑKÔKÐKÐKÕKÔK¥CÑKÔKÐKÕKÔK¥CÑKÔKÐKÐKÐKÕKÔKÑKÔKÐKÐKÕKÔK­
ÑKÔKÐKÕKÔK­
ÑKÔKÐKÐKÕKÔKÐ(CÑKÔKÕKÔKÐ(HÑKÔKÕKÔKÐ(JÑKÔKÕKÔKÐ$KÑKÔKÐKÐKÑKÐKÐKÐKÐKÐKÑKÐKÕKÕKÔKÐKÑKÔKÑKÔKÐKÐKÐKÐKÐKÐKÐKÐKÐKÐKÐKÐKÐKÐKÐKÐKÐKÐKÐKr&   c                ó¤  — | d         }t           j                             ¦   «         D �]§\  }}||v }|sÛt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nddt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nddœz  }t          j	        d|› d�¦  «        d	z   d
|iz  }t          t          j        |¦  «        ¦  «        ‚d}||         }|d         }|j        }	||	k    }
|
sªt          j        d|
fd||	f¦  «        t          j        |¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |	¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚dx}x}
}	|d         }|j        }	||	k    }
|
sªt          j        d|
fd||	f¦  «        t          j        |¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |	¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚dx}x}
}	|d         }|j        }	||	k    }
|
sªt          j        d|
fd||	f¦  «        t          j        |¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |	¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚dx}x}
}	|d         }|j        }	||	k    }
|
sªt          j        d|
fd||	f¦  «        t          j        |¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |	¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚dx}x}
}	|d         }|j        }	||	k    }
|
sªt          j        d|
fd||	f¦  «        t          j        |¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |	¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚dx}x}
}	|d         }|d         }|j        }	|	j        }||k    }
|
s½t          j        d|
fd||f¦  «        t          j        |¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |	¦  «        t          j        |¦  «        dœz  }dd |iz  }t          t          j        |¦  «        ¦  «        ‚dx}x}
x}	}|d!         }|j        }	|	j        }||k    }
|
s½t          j        d|
fd"||f¦  «        t          j        |¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |	¦  «        t          j        |¦  «        dœz  }dd |iz  }t          t          j        |¦  «        ¦  «        ‚dx}x}
x}	}|d#         }|j        }	|	j        }||k    }
|
s½t          j        d|
fd$||f¦  «        t          j        |¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |	¦  «        t          j        |¦  «        dœz  }dd |iz  }t          t          j        |¦  «        ¦  «        ‚dx}x}
x}	}|d%         }|j        }	|	j        }||k    }
|
s½t          j        d|
fd&||f¦  «        t          j        |¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |	¦  «        t          j        |¦  «        dœz  }dd |iz  }t          t          j        |¦  «        ¦  «        ‚dx}x}
x}	}|d'         }|j        }	|	j        }||k    }
|
s½t          j        d|
fd(||f¦  «        t          j        |¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |	¦  «        t          j        |¦  «        dœz  }dd |iz  }t          t          j        |¦  «        ¦  «        ‚dx}x}
x}	}t.          j        }|d)         d*         } ||¦  «        }|j        }|j        }||k    }|�s+t          j        d|fd+||f¦  «        d,t          j        ¦   «         v st          j        t.          ¦  «        rt          j        t.          ¦  «        nd,t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        d-œz  }d.d/|iz  }t          t          j        |¦  «        ¦  «        ‚dx}x}x}x}x}}|d0         d1         }|j        }	|	j        }||k    }
|
s½t          j        d|
fd2||f¦  «        t          j        |¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |	¦  «        t          j        |¦  «        dœz  }dd |iz  }t          t          j        |¦  «        ¦  «        ‚dx}x}
x}	}�Œ©dS )3zSVerify client JS styles match Python styles on id, biome_code, palettes, and rules.rÔ   )Úin)z%(py0)s in %(py2)sr®   rÖ   )r5   r6   zStyle z missing in JS catalogz
>assert %(py4)sr7   Nr”   rq   )z2%(py1)s == %(py5)s
{%(py5)s = %(py3)s.biome_code
}rŠ   )rJ   rK   r�   zassert %(py7)sr‚   r•   )z/%(py1)s == %(py5)s
{%(py5)s = %(py3)s.name_vi
}r–   )z/%(py1)s == %(py5)s
{%(py5)s = %(py3)s.name_en
}r—   )z6%(py1)s == %(py5)s
{%(py5)s = %(py3)s.theme_category
}r¦   )z4%(py1)s == %(py5)s
{%(py5)s = %(py3)s.legacy_alias
}r™   rš   )zJ%(py1)s == %(py7)s
{%(py7)s = %(py5)s
{%(py5)s = %(py3)s.palette
}.floor
})rJ   rK   r�   r‚   zassert %(py9)srƒ   r›   )zI%(py1)s == %(py7)s
{%(py7)s = %(py5)s
{%(py5)s = %(py3)s.palette
}.wall
}rœ   )zI%(py1)s == %(py7)s
{%(py7)s = %(py5)s
{%(py5)s = %(py3)s.palette
}.path
}r�   )zK%(py1)s == %(py7)s
{%(py7)s = %(py5)s
{%(py5)s = %(py3)s.palette
}.liquid
}rž   )zL%(py1)s == %(py7)s
{%(py7)s = %(py5)s
{%(py5)s = %(py3)s.palette
}.ambient
}rŸ   r¢   )z�%(py6)s
{%(py6)s = %(py2)s
{%(py2)s = %(py0)s.approx
}(%(py4)s)
} == %(py12)s
{%(py12)s = %(py10)s
{%(py10)s = %(py8)s.lighting
}.fog_density
}rŒ   )r5   r6   r7   rL   rO   r„   r…   úassert %(py14)sr†   r£   r¥   )zG%(py1)s == %(py7)s
{%(py7)s = %(py5)s
{%(py5)s = %(py3)s.hazard
}.dps
})rw   r‘   r“   rR   r_   rT   rU   rV   rW   rS   rX   rY   r”   r•   r–   r—   r¦   r™   rš   r›   rœ   r�   rž   rŒ   r¡   rŸ   r¢   r£   r¥   )rm   rÖ   r®   rŠ   rc   Ú@py_format3re   Újs_sÚ@py_assert0rj   rh   Ú@py_format6Ú@py_format8Újs_palr§   Ú@py_format10rd   ri   r°   r¨   r¯   r²   Ú@py_format15s                          r'   Ú test_js_catalog_to_python_parityrç   “   sV  € à Ô-€Iå Ô1×7Ò7Ñ9Ô9ð 8ñ 8‰
ˆˆdØ�yÐ ÐGÐGÐGÕGÔGÐGÐGÐGÐGˆt�yÐGÑGÔGÐGÕGÔGÑGÔGÐGÐGÕGÔGˆtÑGÔGÐGÕGÔGˆtÑGÔGÐGÐGÐGÕGÔGÑGÔGÐGÐGÕGÔG�yÑGÔGÐGÕGÔG�yÑGÔGÐGÐGÐGÐGÑGÐGÕGÔGÐ"G¨4Ð"GÐ"GÐ"GÑGÔGÐGÑGÐGÐGÐGÑGÐGÕGÕGÔGÐGÑGÔGÑGÔGÐGÐGÐGØ˜Œˆà�LÔ!Ð4 T¤_Ð4Ð! _Ò4Ð4Ð4Ð4Õ4Ô4Ð4Ð4Ð4Ð4Ð! _Ð4Ñ4Ô4Õ4Ô4Ð!Ñ4Ô4Ð4Õ4Ô4Ñ4Ô4Ð4Ð4Õ4Ô4 TÑ4Ô4Ð4Õ4Ô4 TÑ4Ô4Ð4Ð4Õ4Ô4 _Ñ4Ô4Ð4Ð4Ñ4Ð4Ð4Ð4Ð4Ð4Ñ4Ð4Õ4Õ4Ô4Ð4Ñ4Ô4Ñ4Ô4Ð4Ð4Ð4Ð4Ð4Ð4Ð4Ø�IŒÐ. $¤,Ð.ˆ ,Ò.Ð.Ð.Ð.Õ.Ô.Ð.Ð.Ð.Ð.ˆ ,Ð.Ñ.Ô.Õ.Ô.ˆÑ.Ô.Ð.Õ.Ô.Ñ.Ô.Ð.Ð.Õ.Ô. $Ñ.Ô.Ð.Õ.Ô. $Ñ.Ô.Ð.Ð.Õ.Ô. ,Ñ.Ô.Ð.Ð.Ñ.Ð.Ð.Ð.Ð.Ð.Ñ.Ð.Õ.Õ.Ô.Ð.Ñ.Ô.Ñ.Ô.Ð.Ð.Ð.Ð.Ð.Ð.Ð.Ø�IŒÐ. $¤,Ð.ˆ ,Ò.Ð.Ð.Ð.Õ.Ô.Ð.Ð.Ð.Ð.ˆ ,Ð.Ñ.Ô.Õ.Ô.ˆÑ.Ô.Ð.Õ.Ô.Ñ.Ô.Ð.Ð.Õ.Ô. $Ñ.Ô.Ð.Õ.Ô. $Ñ.Ô.Ð.Ð.Õ.Ô. ,Ñ.Ô.Ð.Ð.Ñ.Ð.Ð.Ð.Ð.Ð.Ñ.Ð.Õ.Õ.Ô.Ð.Ñ.Ô.Ñ.Ô.Ð.Ð.Ð.Ð.Ð.Ð.Ð.ØÐ$Ô%Ð<¨Ô)<Ð<Ð%Ð)<Ò<Ð<Ð<Ð<Õ<Ô<Ð<Ð<Ð<Ð<Ð%Ð)<Ð<Ñ<Ô<Õ<Ô<Ð%Ñ<Ô<Ð<Õ<Ô<Ñ<Ô<Ð<Ð<Õ<Ô<¨Ñ<Ô<Ð<Õ<Ô<¨Ñ<Ô<Ð<Ð<Õ<Ô<Ð)<Ñ<Ô<Ð<Ð<Ñ<Ð<Ð<Ð<Ð<Ð<Ñ<Ð<Õ<Õ<Ô<Ð<Ñ<Ô<Ñ<Ô<Ð<Ð<Ð<Ð<Ð<Ð<Ð<Ø�NÔ#Ð8 tÔ'8Ð8Ð#Ð'8Ò8Ð8Ð8Ð8Õ8Ô8Ð8Ð8Ð8Ð8Ð#Ð'8Ð8Ñ8Ô8Õ8Ô8Ð#Ñ8Ô8Ð8Õ8Ô8Ñ8Ô8Ð8Ð8Õ8Ô8 tÑ8Ô8Ð8Õ8Ô8 tÑ8Ô8Ð8Ð8Õ8Ô8Ð'8Ñ8Ô8Ð8Ð8Ñ8Ð8Ð8Ð8Ð8Ð8Ñ8Ð8Õ8Õ8Ô8Ð8Ñ8Ô8Ñ8Ô8Ð8Ð8Ð8Ð8Ð8Ð8Ð8à�i”ˆØ�gŒÐ4 $¤,Ð4 ,Ô"4Ð4ˆÐ"4Ò4Ð4Ð4Ð4Õ4Ô4Ð4Ð4Ð4Ð4ˆÐ"4Ð4Ñ4Ô4Õ4Ô4ˆÑ4Ô4Ð4Õ4Ô4Ñ4Ô4Ð4Ð4Õ4Ô4 $Ñ4Ô4Ð4Õ4Ô4 $Ñ4Ô4Ð4Ð4Õ4Ô4 ,Ñ4Ô4Õ4Ô4Ð"4Ñ4Ô4Ð4Ð4Ñ4Ð4Ð4Ð4Ð4Ð4Ñ4Ð4Õ4Õ4Ô4Ð4Ñ4Ô4Ñ4Ô4Ð4Ð4Ð4Ð4Ð4Ð4Ð4Ð4Ð4Ø�fŒ~Ð2 ¤Ð2 Ô!2Ð2ˆ~Ð!2Ò2Ð2Ð2Ð2Õ2Ô2Ð2Ð2Ð2Ð2ˆ~Ð!2Ð2Ñ2Ô2Õ2Ô2ˆ~Ñ2Ô2Ð2Õ2Ô2Ñ2Ô2Ð2Ð2Õ2Ô2 Ñ2Ô2Ð2Õ2Ô2 Ñ2Ô2Ð2Ð2Õ2Ô2 Ñ2Ô2Õ2Ô2Ð!2Ñ2Ô2Ð2Ð2Ñ2Ð2Ð2Ð2Ð2Ð2Ñ2Ð2Õ2Õ2Ô2Ð2Ñ2Ô2Ñ2Ô2Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ø�fŒ~Ð2 ¤Ð2 Ô!2Ð2ˆ~Ð!2Ò2Ð2Ð2Ð2Õ2Ô2Ð2Ð2Ð2Ð2ˆ~Ð!2Ð2Ñ2Ô2Õ2Ô2ˆ~Ñ2Ô2Ð2Õ2Ô2Ñ2Ô2Ð2Ð2Õ2Ô2 Ñ2Ô2Ð2Õ2Ô2 Ñ2Ô2Ð2Ð2Õ2Ô2 Ñ2Ô2Õ2Ô2Ð!2Ñ2Ô2Ð2Ð2Ñ2Ð2Ð2Ð2Ð2Ð2Ñ2Ð2Õ2Õ2Ô2Ð2Ñ2Ô2Ñ2Ô2Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ø�hÔÐ6 4¤<Ð6 <Ô#6Ð6ÐÐ#6Ò6Ð6Ð6Ð6Õ6Ô6Ð6Ð6Ð6Ð6ÐÐ#6Ð6Ñ6Ô6Õ6Ô6ÐÑ6Ô6Ð6Õ6Ô6Ñ6Ô6Ð6Ð6Õ6Ô6 4Ñ6Ô6Ð6Õ6Ô6 4Ñ6Ô6Ð6Ð6Õ6Ô6 <Ñ6Ô6Õ6Ô6Ð#6Ñ6Ô6Ð6Ð6Ñ6Ð6Ð6Ð6Ð6Ð6Ñ6Ð6Õ6Õ6Ô6Ð6Ñ6Ô6Ñ6Ô6Ð6Ð6Ð6Ð6Ð6Ð6Ð6Ð6Ð6Ø�iÔ Ð8 D¤LÐ8 LÔ$8Ð8Ð Ð$8Ò8Ð8Ð8Ð8Õ8Ô8Ð8Ð8Ð8Ð8Ð Ð$8Ð8Ñ8Ô8Õ8Ô8Ð Ñ8Ô8Ð8Õ8Ô8Ñ8Ô8Ð8Ð8Õ8Ô8 DÑ8Ô8Ð8Õ8Ô8 DÑ8Ô8Ð8Ð8Õ8Ô8 LÑ8Ô8Õ8Ô8Ð$8Ñ8Ô8Ð8Ð8Ñ8Ð8Ð8Ð8Ð8Ð8Ñ8Ð8Õ8Õ8Ô8Ð8Ñ8Ô8Ñ8Ô8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8åŒ}ÐZ˜T *Ô-¨mÔ<ÐZˆ}ˆ}Ð<Ñ=Ô=ÐZÀÄÐZÀÔAZÐZÐ=ÐAZÒZÐZÐZÑZÕZÔZÐZÐZÐZÐZÐ=ÐAZÐZÑZÔZÐZÕZÔZÑZÔZÐZÐZÕZÔZ�vÑZÔZÐZÕZÔZ�vÑZÔZÐZÐZÕZÔZˆ}ÑZÔZÕZÔZÐ<ÑZÔZÕZÔZÐ=ÑZÔZÐZÕZÔZÑZÔZÐZÐZÕZÔZÀÑZÔZÐZÕZÔZÀÑZÔZÐZÐZÕZÔZÀÑZÔZÕZÔZÐAZÑZÔZÐZÐZÑZÐZÐZÐZÐZÐZÑZÐZÕZÕZÔZÐZÑZÔZÑZÔZÐZÐZÐZÐZÐZÐZÐZÐZÐZÐZÐZÐZÐZØ�HŒ~˜eÔ$Ð7¨¬Ð7¨¬Ð7Ð$¨Ò7Ð7Ð7Ð7Õ7Ô7Ð7Ð7Ð7Ð7Ð$¨Ð7Ñ7Ô7Õ7Ô7Ð$Ñ7Ô7Ð7Õ7Ô7Ñ7Ô7Ð7Ð7Õ7Ô7¨Ñ7Ô7Ð7Õ7Ô7¨Ñ7Ô7Ð7Ð7Õ7Ô7¨Ñ7Ô7Õ7Ô7¨Ñ7Ô7Ð7Ð7Ñ7Ð7Ð7Ð7Ð7Ð7Ñ7Ð7Õ7Õ7Ô7Ð7Ñ7Ô7Ñ7Ô7Ð7Ð7Ð7Ð7Ð7Ð7Ð7Ð7Ð7Ñ7ð%8ð 8r&   c           
     ó„  — d„ |d                               ¦   «         D ¦   «         }|d         }t                                ¦   «         D �	]ø\  }\  }}t          j        |¦  «        }d}||u}	|	s—t	          j        d|	fd||f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        dœz  }
d	d
|
iz  }t          t	          j        |¦  «        ¦  «        ‚dx}	}|j        }	|	|k    }|sÕt	          j        d|fd|	|f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |	¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        nddœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚dx}	}|j        }	|	|k    }|sÕt	          j        d|fd|	|f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |	¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        nddœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚dx}	}t          j        |         }||k    }|s—t	          j        d|fd||f¦  «        t	          j	        |¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        nddœz  }
d	d
|
iz  }t          t	          j        |¦  «        ¦  «        ‚dx}}t          j        }	 |	|¦  «        }|j        }||k    }|�sCt	          j        d|fd||f¦  «        dt          j        ¦   «         v st	          j        t          ¦  «        rt	          j	        t          ¦  «        ndt	          j	        |	¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        t	          j	        |¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        nddœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚dx}	x}x}}|                      |¦  «        }d}||u}	|	s—t	          j        d|	fd||f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        dœz  }
d	d
|
iz  }t          t	          j        |¦  «        ¦  «        ‚dx}	}|j        }	|	|k    }|sÕt	          j        d|fd|	|f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |	¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        nddœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚dx}	}|j        }	|	|k    }|sÕt	          j        d|fd|	|f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |	¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        nddœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚dx}	}| j        }	 |	|¦  «        }|j        }||k    }|�s9t	          j        d|fd||f¦  «        dt          j        ¦   «         v st	          j        | ¦  «        rt	          j	        | ¦  «        ndt	          j	        |	¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        t	          j	        |¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        nddœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚dx}	x}x}}||         }||k    }|s—t	          j        d|fd||f¦  «        t	          j	        |¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        nddœz  }
d	d
|
iz  }t          t	          j        |¦  «        ¦  «        ‚dx}}||         }||k    }|s—t	          j        d|fd||f¦  «        t	          j	        |¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        nddœz  }
d	d
|
iz  }t          t	          j        |¦  «        ¦  «        ‚dx}}�	ŒúdS )zRVerify codes 1-5 map to the 5 canonical biomes across Python, DB, and JS catalogs.c                ó4   — i | ]\  }}t          |¦  «        |“ŒS r%   )Úint)rB   ÚkÚvs      r'   r   z=test_legacy_biomes_backward_compatibility.<locals>.<dictcomp>°   s$   € ÐOÐOÐO™d˜a •�A‘”˜ÐOÐOÐOr&   rÕ   Ú
legacy_mapN©úis not)z%(py0)s is not %(py3)sÚpy_style)r5   rK   zassert %(py5)sr�   rq   )z0%(py2)s
{%(py2)s = %(py0)s.style_id
} == %(py4)sÚexpected_style_idr4   zassert %(py6)srL   )z4%(py2)s
{%(py2)s = %(py0)s.legacy_alias
} == %(py4)sÚlegacy_name)z%(py1)s == %(py3)s)rJ   rK   )zq%(py7)s
{%(py7)s = %(py5)s
{%(py5)s = %(py2)s
{%(py2)s = %(py0)s.get_map_style
}(%(py3)s)
}.style_id
} == %(py9)srw   )r5   r6   rK   r�   r‚   rƒ   úassert %(py11)sr�   Údb_style)zm%(py7)s
{%(py7)s = %(py5)s
{%(py5)s = %(py2)s
{%(py2)s = %(py0)s.get_style
}(%(py3)s)
}.style_id
} == %(py9)sr-   )r“   ÚEXPECTED_LEGACY_MAPPINGSrw   Úget_map_style_by_coderR   r_   rT   rU   rV   rW   rX   rY   r|   r¦   ÚLEGACY_BIOME_TO_STYLE_IDÚget_map_styleÚget_style_by_codeÚ	get_style)r-   rm   r×   Ú	js_legacyÚcoderò   rñ   rð   rh   rc   Ú@py_format4râ   rd   re   rk   rá   rj   r§   r«   rå   rÐ   rô   s                         r'   Ú)test_legacy_biomes_backward_compatibilityrþ   ¬   s’  € ð PÐO o°oÔ&F×&LÒ&LÑ&NÔ&NÐOÑOÔO€HØ Ô-€Iå2J×2PÒ2PÑ2RÔ2Rð ;ñ ;Ñ.ˆÑ.ˆ{Ð-åÔ3°DÑ9Ô9ˆØ#Ð#ˆx˜tÐ#Ð#Ð#Ð#Õ#Ô#Ð#Ð#Ð#Ð#ˆx˜tÐ#Ñ#Ô#Ð#Õ#Ô#Ñ#Ô#Ð#Ð#Õ#Ô#ˆxÑ#Ô#Ð#Õ#Ô#ˆxÑ#Ô#Ð#Ð#Õ#Ô#˜tÑ#Ô#Ð#Ð#Ñ#Ð#Ð#Ð#Ð#Ð#Ñ#Ð#Õ#Õ#Ô#Ð#Ñ#Ô#Ñ#Ô#Ð#Ð#Ð#Ð#Ð#ØÔ Ð5Ð Ð$5Ò5Ð5Ð5Ð5Õ5Ô5Ð5Ð5Ð5Ð5Ð Ð$5Ð5Ñ5Ô5Ð5Õ5Ô5Ñ5Ô5Ð5Ð5Õ5Ô5ˆxÑ5Ô5Ð5Õ5Ô5ˆxÑ5Ô5Ð5Ð5Õ5Ô5Ð Ñ5Ô5Ð5Õ5Ô5Ñ5Ô5Ð5Ð5Õ5Ô5Ð$5Ñ5Ô5Ð5Õ5Ô5Ð$5Ñ5Ô5Ð5Ð5Ð5Ð5Ñ5Ð5Ð5Ð5Ð5Ð5Ñ5Ð5Õ5Õ5Ô5Ð5Ñ5Ô5Ñ5Ô5Ð5Ð5Ð5Ð5Ð5ØÔ$Ð3Ð$¨Ò3Ð3Ð3Ð3Õ3Ô3Ð3Ð3Ð3Ð3Ð$¨Ð3Ñ3Ô3Ð3Õ3Ô3Ñ3Ô3Ð3Ð3Õ3Ô3ˆxÑ3Ô3Ð3Õ3Ô3ˆxÑ3Ô3Ð3Ð3Õ3Ô3Ð$Ñ3Ô3Ð3Õ3Ô3Ñ3Ô3Ð3Ð3Õ3Ô3¨Ñ3Ô3Ð3Õ3Ô3¨Ñ3Ô3Ð3Ð3Ð3Ð3Ñ3Ð3Ð3Ð3Ð3Ð3Ñ3Ð3Õ3Õ3Ô3Ð3Ñ3Ô3Ñ3Ô3Ð3Ð3Ð3Ð3Ð3ÝÔ2°;Ô?ÐTÐ?ÐCTÒTÐTÐTÐTÕTÔTÐTÐTÐTÐTÐ?ÐCTÐTÑTÔTÕTÔTÐ?ÑTÔTÐTÕTÔTÑTÔTÐTÐTÕTÔTÐCTÑTÔTÐTÕTÔTÐCTÑTÔTÐTÐTÐTÐTÑTÐTÐTÐTÐTÐTÑTÐTÕTÕTÔTÐTÑTÔTÑTÔTÐTÐTÐTÐTÐTÝÔ'ÐRÐ'Ð'¨Ñ4Ô4ÐRÐ4Ô=ÐRÐ=ÐARÒRÐRÐRÑRÕRÔRÐRÐRÐRÐRÐ=ÐARÐRÑRÔRÐRÕRÔRÑRÔRÐRÐRÕRÔR�zÑRÔRÐRÕRÔR�zÑRÔRÐRÐRÕRÔRÐ'ÑRÔRÐRÕRÔRÑRÔRÐRÐRÕRÔR¨ÑRÔRÐRÕRÔR¨ÑRÔRÐRÐRÕRÔRÐ4ÑRÔRÕRÔRÐ=ÑRÔRÐRÕRÔRÑRÔRÐRÐRÕRÔRÐARÑRÔRÐRÕRÔRÐARÑRÔRÐRÐRÐRÐRÑRÐRÐRÐRÐRÐRÑRÐRÕRÕRÔRÐRÑRÔRÑRÔRÐRÐRÐRÐRÐRÐRÐRÐRÐRð ×/Ò/°Ñ5Ô5ˆØ#Ð#ˆx˜tÐ#Ð#Ð#Ð#Õ#Ô#Ð#Ð#Ð#Ð#ˆx˜tÐ#Ñ#Ô#Ð#Õ#Ô#Ñ#Ô#Ð#Ð#Õ#Ô#ˆxÑ#Ô#Ð#Õ#Ô#ˆxÑ#Ô#Ð#Ð#Õ#Ô#˜tÑ#Ô#Ð#Ð#Ñ#Ð#Ð#Ð#Ð#Ð#Ñ#Ð#Õ#Õ#Ô#Ð#Ñ#Ô#Ñ#Ô#Ð#Ð#Ð#Ð#Ð#ØÔ Ð5Ð Ð$5Ò5Ð5Ð5Ð5Õ5Ô5Ð5Ð5Ð5Ð5Ð Ð$5Ð5Ñ5Ô5Ð5Õ5Ô5Ñ5Ô5Ð5Ð5Õ5Ô5ˆxÑ5Ô5Ð5Õ5Ô5ˆxÑ5Ô5Ð5Ð5Õ5Ô5Ð Ñ5Ô5Ð5Õ5Ô5Ñ5Ô5Ð5Ð5Õ5Ô5Ð$5Ñ5Ô5Ð5Õ5Ô5Ð$5Ñ5Ô5Ð5Ð5Ð5Ð5Ñ5Ð5Ð5Ð5Ð5Ð5Ñ5Ð5Õ5Õ5Ô5Ð5Ñ5Ô5Ñ5Ô5Ð5Ð5Ð5Ð5Ð5ØÔ$Ð3Ð$¨Ò3Ð3Ð3Ð3Õ3Ô3Ð3Ð3Ð3Ð3Ð$¨Ð3Ñ3Ô3Ð3Õ3Ô3Ñ3Ô3Ð3Ð3Õ3Ô3ˆxÑ3Ô3Ð3Õ3Ô3ˆxÑ3Ô3Ð3Ð3Õ3Ô3Ð$Ñ3Ô3Ð3Õ3Ô3Ñ3Ô3Ð3Ð3Õ3Ô3¨Ñ3Ô3Ð3Õ3Ô3¨Ñ3Ô3Ð3Ð3Ð3Ð3Ñ3Ð3Ð3Ð3Ð3Ð3Ñ3Ð3Õ3Õ3Ô3Ð3Ñ3Ô3Ñ3Ô3Ð3Ð3Ð3Ð3Ð3ØÔ#ÐNÐ#Ð# KÑ0Ô0ÐNÐ0Ô9ÐNÐ9Ð=NÒNÐNÐNÑNÕNÔNÐNÐNÐNÐNÐ9Ð=NÐNÑNÔNÐNÕNÔNÑNÔNÐNÐNÕNÔNˆzÑNÔNÐNÕNÔNˆzÑNÔNÐNÐNÕNÔNÐ#ÑNÔNÐNÕNÔNÑNÔNÐNÐNÕNÔN KÑNÔNÐNÕNÔN KÑNÔNÐNÐNÕNÔNÐ0ÑNÔNÕNÔNÐ9ÑNÔNÐNÕNÔNÑNÔNÐNÐNÕNÔNÐ=NÑNÔNÐNÕNÔNÐ=NÑNÔNÐNÐNÐNÐNÑNÐNÐNÐNÐNÐNÑNÐNÕNÕNÔNÐNÑNÔNÑNÔNÐNÐNÐNÐNÐNÐNÐNÐNÐNð ˜Œ~Ð2ˆ~Ð!2Ò2Ð2Ð2Ð2Õ2Ô2Ð2Ð2Ð2Ð2ˆ~Ð!2Ð2Ñ2Ô2Õ2Ô2ˆ~Ñ2Ô2Ð2Õ2Ô2Ñ2Ô2Ð2Ð2Õ2Ô2Ð!2Ñ2Ô2Ð2Õ2Ô2Ð!2Ñ2Ô2Ð2Ð2Ð2Ð2Ñ2Ð2Ð2Ð2Ð2Ð2Ñ2Ð2Õ2Õ2Ô2Ð2Ñ2Ô2Ñ2Ô2Ð2Ð2Ð2Ð2Ð2Ø˜Ô%Ð:Ð%Ð):Ò:Ð:Ð:Ð:Õ:Ô:Ð:Ð:Ð:Ð:Ð%Ð):Ð:Ñ:Ô:Õ:Ô:Ð%Ñ:Ô:Ð:Õ:Ô:Ñ:Ô:Ð:Ð:Õ:Ô:Ð):Ñ:Ô:Ð:Õ:Ô:Ð):Ñ:Ô:Ð:Ð:Ð:Ð:Ñ:Ð:Ð:Ð:Ð:Ð:Ñ:Ð:Õ:Õ:Ô:Ð:Ñ:Ô:Ñ:Ô:Ð:Ð:Ð:Ð:Ð:Ñ:ð%;ð ;r&   c           	     ó:  ‡— |d                               ¦   «         }t          D �]öŠt          j        ‰¦  «        }t	          |¦  «        }d}||k    }|�st          j        d|fd||f¦  «        dt          j        ¦   «         v st          j	        t          ¦  «        rt          j
        t          ¦  «        nddt          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        ndt          j
        |¦  «        t          j
        |¦  «        dœz  }t          j        d‰› d	t	          |¦  «        › d
�¦  «        dz   d|iz  }t          t          j        |¦  «        ¦  «        ‚dx}x}}ˆfd„|                      ¦   «         D ¦   «         }	t	          |	¦  «        }d}||k    }|�st          j        d|fd||f¦  «        dt          j        ¦   «         v st          j	        t          ¦  «        rt          j
        t          ¦  «        nddt          j        ¦   «         v st          j	        |	¦  «        rt          j
        |	¦  «        ndt          j
        |¦  «        t          j
        |¦  «        dœz  }t          j        d‰› d	t	          |	¦  «        › d
�¦  «        dz   d|iz  }t          t          j        |¦  «        ¦  «        ‚dx}x}}ˆfd„|D ¦   «         }
t	          |
¦  «        }d}||k    }|�st          j        d|fd||f¦  «        dt          j        ¦   «         v st          j	        t          ¦  «        rt          j
        t          ¦  «        nddt          j        ¦   «         v st          j	        |
¦  «        rt          j
        |
¦  «        ndt          j
        |¦  «        t          j
        |¦  «        dœz  }t          j        d‰› d	t	          |
¦  «        › d
�¦  «        dz   d|iz  }t          t          j        |¦  «        ¦  «        ‚dx}x}}�ŒødS )zHVerify 6 themes have exactly 5 styles each in Python, DB, and Client JS.rÔ   r   rq   rs   rG   Úpy_grouprI   zPython theme z has z styles, expected 5rN   rO   Nc                ó*   •— g | ]}|j         ‰k    ¯|‘ŒS r%   ©r—   ©rB   r~   Úthemes     €r'   rD   zItest_thematic_categories_distribution_across_catalogs.<locals>.<listcomp>Ò   s&   ø€ ÐUÐUÐU˜!¸1Ô;KÈuÒ;TÐ;T�AÐ;TÐ;TÐ;Tr&   Údb_groupz	DB theme c                ó,   •— g | ]}|d          ‰k    ¯|‘ŒS r  r%   r  s     €r'   rD   zItest_thematic_categories_distribution_across_catalogs.<locals>.<listcomp>Õ   s)   ø€ ÐIÐIÐI˜!¨AÐ.>Ô,?À5Ò,HÐ,H�AÐ,HÐ,HÐ,Hr&   Újs_groupz	JS theme )ÚvaluesÚEXPECTED_THEMESrw   Úlist_styles_by_categoryrG   rR   r_   rT   rU   rV   rW   rS   rX   rY   rx   )r-   rm   rÖ   r   rh   ri   rj   rk   rl   r  r  r  s              @r'   Ú5test_thematic_categories_distribution_across_catalogsr  È   s[  ø€ ð   Ô-×4Ò4Ñ6Ô6€Iå ð ^ñ ^ˆÝÔ5°eÑ<Ô<ˆÝ�8‰}Œ}Ða Ðaˆ} Ò!ÐaÐaÑaÕaÔaÐaÐaÐaÐaˆ} ÐaÑaÔaÐaÕaÔaÑaÔaÐaÐaÕaÔa�sÑaÔaÐaÕaÔa�sÑaÔaÐaÐaÐaÕaÔaÑaÔaÐaÐaÕaÔa�8ÑaÔaÐaÕaÔa�8ÑaÔaÐaÐaÕaÔaˆ}ÑaÔaÕaÔa ÑaÔaÐaÐaÑaÐaÕaÔaÐ#a°5Ð#aÐ#a½sÀ8¹}¼}Ð#aÐ#aÐ#aÑaÔaÐaÑaÐaÐaÐaÑaÐaÕaÕaÔaÐaÑaÔaÑaÔaÐaÐaÐaÐaÐaÐaÐaàUÐUÐUÐU˜z×5Ò5Ñ7Ô7ÐUÑUÔUˆÝ�8‰}Œ}Ð] Ð]ˆ} Ò!Ð]Ð]Ñ]Õ]Ô]Ð]Ð]Ð]Ð]ˆ} Ð]Ñ]Ô]Ð]Õ]Ô]Ñ]Ô]Ð]Ð]Õ]Ô]�sÑ]Ô]Ð]Õ]Ô]�sÑ]Ô]Ð]Ð]Ð]Õ]Ô]Ñ]Ô]Ð]Ð]Õ]Ô]�8Ñ]Ô]Ð]Õ]Ô]�8Ñ]Ô]Ð]Ð]Õ]Ô]ˆ}Ñ]Ô]Õ]Ô] Ñ]Ô]Ð]Ð]Ñ]Ð]Õ]Ô]Ð#]¨uÐ#]Ð#]½3¸x¹=¼=Ð#]Ð#]Ð#]Ñ]Ô]Ð]Ñ]Ð]Ð]Ð]Ñ]Ð]Õ]Õ]Ô]Ð]Ñ]Ô]Ñ]Ô]Ð]Ð]Ð]Ð]Ð]Ð]Ð]àIÐIÐIÐI˜yÐIÑIÔIˆÝ�8‰}Œ}Ð] Ð]ˆ} Ò!Ð]Ð]Ñ]Õ]Ô]Ð]Ð]Ð]Ð]ˆ} Ð]Ñ]Ô]Ð]Õ]Ô]Ñ]Ô]Ð]Ð]Õ]Ô]�sÑ]Ô]Ð]Õ]Ô]�sÑ]Ô]Ð]Ð]Ð]Õ]Ô]Ñ]Ô]Ð]Ð]Õ]Ô]�8Ñ]Ô]Ð]Õ]Ô]�8Ñ]Ô]Ð]Ð]Õ]Ô]ˆ}Ñ]Ô]Õ]Ô] Ñ]Ô]Ð]Ð]Ñ]Ð]Õ]Ô]Ð#]¨uÐ#]Ð#]½3¸x¹=¼=Ð#]Ð#]Ð#]Ñ]Ô]Ð]Ñ]Ð]Ð]Ð]Ñ]Ð]Õ]Õ]Ô]Ð]Ñ]Ô]Ñ]Ô]Ð]Ð]Ð]Ð]Ð]Ð]Ð]Ñ]ð^ð ^r&   c            
     ó8  — t           j        } d} | |¦  «        }d}||u}|sÚt          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        t           ¦  «        rt          j        t           ¦  «        ndt          j        | ¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚dx} x}x}x}}t           j
        } d} | |¦  «        }d}||u}|sÚt          j        d|fd	||f¦  «        dt	          j        ¦   «         v st          j        t           ¦  «        rt          j        t           ¦  «        ndt          j        | ¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚dx} x}x}x}}t           j        } d
} | |¦  «        }|j        }d}||k    }|sít          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        t           ¦  «        rt          j        t           ¦  «        ndt          j        | ¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }	t          t          j	        |	¦  «        ¦  «        ‚dx} x}x}x}x}}t           j        } d
} | |¦  «        }|j        }d}||k    }|sít          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        t           ¦  «        rt          j        t           ¦  «        ndt          j        | ¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }	t          t          j	        |	¦  «        ¦  «        ‚dx} x}x}x}x}}t           j        } d} | |¦  «        }d}||u }|sÚt          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        t           ¦  «        rt          j        t           ¦  «        ndt          j        | ¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚dx} x}x}x}}t           j        } d} | |¦  «        }d}||u }|sÚt          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        t           ¦  «        rt          j        t           ¦  «        ndt          j        | ¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚dx} x}x}x}}t          j        ¦   «         }
t          |
¦  «        }d}||k    }|sòt          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        nddt	          j        ¦   «         v st          j        |
¦  «        rt          j        |
¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚dx}x}}t!          |
¦  «        }t          |¦  «        }d}||k    }|�sMt          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        nddt	          j        ¦   «         v st          j        t           ¦  «        rt          j        t           ¦  «        nddt	          j        ¦   «         v st          j        |
¦  «        rt          j        |
¦  «        ndt          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚dx}x}x}}t          j        ¦   «         }t          |¦  «        }d}||k    }|sòt          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        nddt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚dx}x}}d „ |D ¦   «         }d!}d}t%          ||¦  «        }t'          |¦  «        }||k    }|�s5t          j        d|fd"||f¦  «        t          j        |¦  «        d#t	          j        ¦   «         v st          j        t&          ¦  «        rt          j        t&          ¦  «        nd#d$t	          j        ¦   «         v st          j        t$          ¦  «        rt          j        t$          ¦  «        nd$t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        d%œz  }d&d'|iz  }t          t          j	        |¦  «        ¦  «        ‚dx}x}x}x}x}}dS )(zFVerify all lookup helper methods in server/world/map_style_catalog.py.ÚSTY_01_HOANG_MANG_CO_LONrî   )zW%(py6)s
{%(py6)s = %(py2)s
{%(py2)s = %(py0)s.get_map_style
}(%(py4)s)
} is not %(py9)srw   )r5   r6   r7   rL   rƒ   ró   r�   )zS%(py6)s
{%(py6)s = %(py2)s
{%(py2)s = %(py0)s.get_style
}(%(py4)s)
} is not %(py9)sé   rq   )zz%(py8)s
{%(py8)s = %(py6)s
{%(py6)s = %(py2)s
{%(py2)s = %(py0)s.get_map_style_by_code
}(%(py4)s)
}.style_id
} == %(py11)s)r5   r6   r7   rL   rO   r�   rÄ   rŽ   )zv%(py8)s
{%(py8)s = %(py6)s
{%(py6)s = %(py2)s
{%(py2)s = %(py0)s.get_style_by_code
}(%(py4)s)
}.style_id
} == %(py11)sr   )Úis)z[%(py6)s
{%(py6)s = %(py2)s
{%(py2)s = %(py0)s.get_map_style_by_code
}(%(py4)s)
} is %(py9)sé   rp   rs   rG   Úall_idsrI   ru   rO   )zN%(py6)s
{%(py6)s = %(py0)s(%(py4)s
{%(py4)s = %(py1)s(%(py2)s)
})
} == %(py9)sr€   )r5   rJ   r6   r7   rL   rƒ   Úordered_stylesc                ó   — g | ]	}|j         ‘Œ
S r%   )r”   r}   s     r'   rD   z5test_python_catalog_query_helpers.<locals>.<listcomp>ì   s   € Ð1Ð1Ð1˜QˆAŒLÐ1Ð1Ð1r&   r   )z[%(py1)s == %(py12)s
{%(py12)s = %(py3)s(%(py10)s
{%(py10)s = %(py4)s(%(py6)s, %(py8)s)
})
}ÚlistÚrange)rJ   rK   r7   rL   rO   r„   r…   rÞ   r†   )rw   rø   rR   r_   rT   rU   rV   rW   rX   rY   rú   rö   r|   rù   rÅ   rG   r€   rx   r  r  )rc   rd   ri   r«   r¯   rå   rÐ   rµ   r°   rÑ   r  rh   rj   rk   rl   r  rá   r¨   r²   ræ   s                       r'   Ú!test_python_catalog_query_helpersr  Ù   sl  € õ Ô#ÐJÐ$=ÐJÐ#Ð#Ð$=Ñ>Ô>ÐJÀdÐJÐ>ÀdÐJÐJÐJÐJÕJÔJÐJÐJÐJÐJÐ>ÀdÐJÑJÔJÐJÕJÔJÑJÔJÐJÐJÕJÔJ�:ÑJÔJÐJÕJÔJ�:ÑJÔJÐJÐJÕJÔJÐ#ÑJÔJÕJÔJÐ$=ÑJÔJÕJÔJÐ>ÑJÔJÕJÔJÀdÑJÔJÐJÐJÑJÐJÐJÐJÐJÐJÑJÐJÕJÕJÔJÐJÑJÔJÑJÔJÐJÐJÐJÐJÐJÐJÐJÐJÐJÐJÐJÝÔÐFÐ 9ÐFÐÐÐ 9Ñ:Ô:ÐFÀ$ÐFÐ:À$ÐFÐFÐFÐFÕFÔFÐFÐFÐFÐFÐ:À$ÐFÑFÔFÐFÕFÔFÑFÔFÐFÐFÕFÔF�:ÑFÔFÐFÕFÔF�:ÑFÔFÐFÐFÕFÔFÐÑFÔFÕFÔFÐ 9ÑFÔFÕFÔFÐ:ÑFÔFÕFÔFÀ$ÑFÔFÐFÐFÑFÐFÐFÐFÐFÐFÑFÐFÕFÕFÔFÐFÑFÔFÑFÔFÐFÐFÐFÐFÐFÐFÐFÐFÐFÐFÐFõ Ô+ÐT¨AÐTÐ+Ð+¨AÑ.Ô.ÐTÐ.Ô7ÐTÐ;TÐTÐ7Ð;TÒTÐTÐTÐTÕTÔTÐTÐTÐTÐTÐ7Ð;TÐTÑTÔTÐTÕTÔTÑTÔTÐTÐTÕTÔT�:ÑTÔTÐTÕTÔT�:ÑTÔTÐTÐTÕTÔTÐ+ÑTÔTÕTÔT¨AÑTÔTÕTÔTÐ.ÑTÔTÕTÔTÐ7ÑTÔTÕTÔTÐ;TÑTÔTÐTÐTÑTÐTÐTÐTÐTÐTÑTÐTÕTÕTÔTÐTÑTÔTÑTÔTÐTÐTÐTÐTÐTÐTÐTÐTÐTÐTÐTÐTÐTÝÔ'ÐP¨ÐPÐ'Ð'¨Ñ*Ô*ÐPÐ*Ô3ÐPÐ7PÐPÐ3Ð7PÒPÐPÐPÐPÕPÔPÐPÐPÐPÐPÐ3Ð7PÐPÑPÔPÐPÕPÔPÑPÔPÐPÐPÕPÔP�:ÑPÔPÐPÕPÔP�:ÑPÔPÐPÐPÕPÔPÐ'ÑPÔPÕPÔP¨ÑPÔPÕPÔPÐ*ÑPÔPÕPÔPÐ3ÑPÔPÕPÔPÐ7PÑPÔPÐPÐPÑPÐPÐPÐPÐPÐPÑPÐPÕPÕPÔPÐPÑPÔPÑPÔPÐPÐPÐPÐPÐPÐPÐPÐPÐPÐPÐPÐPÐPÝÔ+Ð6¨AÐ6Ð+Ð+¨AÑ.Ô.Ð6°$Ð6Ð.°$Ð6Ð6Ð6Ð6Õ6Ô6Ð6Ð6Ð6Ð6Ð.°$Ð6Ñ6Ô6Ð6Õ6Ô6Ñ6Ô6Ð6Ð6Õ6Ô6�:Ñ6Ô6Ð6Õ6Ô6�:Ñ6Ô6Ð6Ð6Õ6Ô6Ð+Ñ6Ô6Õ6Ô6¨AÑ6Ô6Õ6Ô6Ð.Ñ6Ô6Õ6Ô6°$Ñ6Ô6Ð6Ð6Ñ6Ð6Ð6Ð6Ð6Ð6Ñ6Ð6Õ6Õ6Ô6Ð6Ñ6Ô6Ñ6Ô6Ð6Ð6Ð6Ð6Ð6Ð6Ð6Ð6Ð6Ð6Ð6ÝÔ+Ð7¨BÐ7Ð+Ð+¨BÑ/Ô/Ð7°4Ð7Ð/°4Ð7Ð7Ð7Ð7Õ7Ô7Ð7Ð7Ð7Ð7Ð/°4Ð7Ñ7Ô7Ð7Õ7Ô7Ñ7Ô7Ð7Ð7Õ7Ô7�:Ñ7Ô7Ð7Õ7Ô7�:Ñ7Ô7Ð7Ð7Õ7Ô7Ð+Ñ7Ô7Õ7Ô7¨BÑ7Ô7Õ7Ô7Ð/Ñ7Ô7Õ7Ô7°4Ñ7Ô7Ð7Ð7Ñ7Ð7Ð7Ð7Ð7Ð7Ñ7Ð7Õ7Õ7Ô7Ð7Ñ7Ô7Ñ7Ô7Ð7Ð7Ð7Ð7Ð7Ð7Ð7Ð7Ð7Ð7Ð7õ Ô.Ñ0Ô0€GÝˆw‰<Œ<Ð˜2Ðˆ<˜2ÒÐÐÐÕÔÐÐÐÐˆ<˜2ÐÑÔÐÕÔÑÔÐÐÕÔ�3ÑÔÐÕÔ�3ÑÔÐÐÐÕÔÑÔÐÐÕÔˆwÑÔÐÕÔˆwÑÔÐÐÕÔˆ<ÑÔÕÔ˜2ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÐÐÝ�7‰|Œ|Ð"�3ˆ|ÑÔÐ" Ð"Ð Ò"Ð"Ð"Ñ"Õ"Ô"Ð"Ð"Ð"Ð"Ð Ð"Ñ"Ô"Ð"Õ"Ô"Ñ"Ô"Ð"Ð"Õ"Ô"�3Ñ"Ô"Ð"Õ"Ô"�3Ñ"Ô"Ð"Ð"Ð"Õ"Ô"Ñ"Ô"Ð"Ð"Õ"Ô"�sÑ"Ô"Ð"Õ"Ô"�sÑ"Ô"Ð"Ð"Ð"Õ"Ô"Ñ"Ô"Ð"Ð"Õ"Ô"�7Ñ"Ô"Ð"Õ"Ô"�7Ñ"Ô"Ð"Ð"Õ"Ô"ˆ|Ñ"Ô"Õ"Ô"ÐÑ"Ô"Õ"Ô" Ñ"Ô"Ð"Ð"Ñ"Ð"Ð"Ð"Ð"Ð"Ñ"Ð"Õ"Õ"Ô"Ð"Ñ"Ô"Ñ"Ô"Ð"Ð"Ð"Ð"Ð"Ð"Ð"Ð"Ð"åÔ+Ñ-Ô-€NÝˆ~ÑÔÐ$ "Ð$Ð "Ò$Ð$Ð$Ð$Õ$Ô$Ð$Ð$Ð$Ð$Ð "Ð$Ñ$Ô$Ð$Õ$Ô$Ñ$Ô$Ð$Ð$Õ$Ô$�3Ñ$Ô$Ð$Õ$Ô$�3Ñ$Ô$Ð$Ð$Ð$Õ$Ô$Ñ$Ô$Ð$Ð$Õ$Ô$ˆ~Ñ$Ô$Ð$Õ$Ô$ˆ~Ñ$Ô$Ð$Ð$Õ$Ô$ÐÑ$Ô$Õ$Ô$ "Ñ$Ô$Ð$Ð$Ñ$Ð$Ð$Ð$Ð$Ð$Ñ$Ð$Õ$Õ$Ô$Ð$Ñ$Ô$Ñ$Ô$Ð$Ð$Ð$Ð$Ð$Ð$Ð$Ø1Ð1 .Ð1Ñ1Ô1ÐGÀÐGÀ2ÐG½%ÀÀ2¹,¼,ÐGµT¸,Ñ5GÔ5GÐGÐ1Ð5GÒGÐGÐGÑGÕGÔGÐGÐGÐGÐGÐ1Ð5GÐGÑGÔGÕGÔGÐ1ÑGÔGÐGÕGÔGÑGÔGÐGÐGÕGÔGµTÑGÔGÐGÕGÔGµTÑGÔGÐGÐGÐGÕGÔGÑGÔGÐGÐGÕGÔG½%ÑGÔGÐGÕGÔG½%ÑGÔGÐGÐGÕGÔGÀÑGÔGÕGÔGÀ2ÑGÔGÕGÔG¸,ÑGÔGÕGÔGÐ5GÑGÔGÐGÐGÑGÐGÐGÐGÐGÐGÑGÐGÕGÕGÔGÐGÑGÔGÑGÔGÐGÐGÐGÐGÐGÐGÐGÐGÐGÐGÐGÐGÐGÐGÐGr&   c            
     ó  — t          j        ¦   «         D �]n} d| j        j        fd| j        j        fd| j        j        fd| j        j        fd| j        j        fd| j        j	        ffD �]\  }}t          j        } ||¦  «        }|söt          j        d|› d|› d	| j        › �¦  «        d
z   dt          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        ndt          j        |¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dœz  }t'          t          j        |¦  «        ¦  «        ‚dx}}�Œ�ŒpdS )zOVerify that all color strings across all 30 styles conform strictly to #RRGGBB.rš   r›   rœ   r�   rž   r    zInvalid HEX 'z' in z of zI
>assert %(py5)s
{%(py5)s = %(py2)s
{%(py2)s = %(py0)s.match
}(%(py3)s)
}Ú	HEX_REGEXÚhex_val)r5   r6   rK   r�   N)rw   rx   r™   rš   r›   rœ   r�   rž   rŸ   r    r  ÚmatchrR   rS   r|   rT   rU   rV   rW   rX   rY   )r~   Ú
color_namer  rc   rj   râ   s         r'   Ú,test_hex_colors_validity_across_all_palettesr  ï   s¨  € åÔ#Ñ%Ô%ð 	hñ 	hˆà�a”i”oÐ&Ø�Q”Y”^Ð$Ø�Q”Y”^Ð$Ø�q”yÔ'Ð(Ø˜œ	Ô)Ð*Ø˜AœJÔ2Ð3ð$
ð 	hñ 	hÑˆJ˜õ ”?Ðg�?�? 7Ñ+Ô+ÐgÐ+ÐgÕgÔgÐ-g¸WÐ-gÐ-gÈ:Ð-gÐ-gÐ[\Ô[eÐ-gÐ-gÑgÔgÐgÑgÐgÕgÔgÑgÔgÐgÐgÕgÔg•9ÑgÔgÐgÕgÔg•9ÑgÔgÐgÐgÕgÔg�?ÑgÔgÐgÕgÔgÑgÔgÐgÐgÕgÔg 7ÑgÔgÐgÕgÔg 7ÑgÔgÐgÐgÕgÔgÐ+ÑgÔgÐgÐgÑgÐgÕgÕgÔgÐgÑgÔgÑgÔgÐgÐgÐgÐgÐgÑgñ	hð	hð 	hr&   )r    r   )r(   r   r    r   )r(   r   r    r.   )r-   r   r    rn   )rm   r.   r    rn   )r-   r   rm   r.   r    rn   )r    rn   )*Ú__doc__Ú
__future__r   ÚbuiltinsrT   Ú_pytest.assertion.rewriteÚ	assertionÚrewriterR   ra   ÚreÚsqlite3rZ   Úpathlibr   Útypingr   r   rŒ   Úserver.world.map_style_catalogÚworldÚmap_style_catalogrw   Úserver.world.map_style_servicer   Úcompiler  rõ   r	  Úfixturer(   r-   rm   ry   r¸   rÒ   rÛ   rç   rþ   r  r  r  r%   r&   r'   ú<module>r-     si  ððð ð #Ð "Ð "Ð "Ð "Ð "Ø  € € € € € € € € € € € € €€€€Ø 	€	€	€	Ø €€€Ø Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ð Ð à €€€à 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø :Ð :Ð :Ð :Ð :Ð :àˆBŒJÐ+Ñ,Ô,€	ð >Ø>Ø7Ø9Ø;ðð Ð ðð ð €ð €„�hÐÑÔð9ð 9ð 9ñ  Ôð9ð €„�hÐÑÔð,ð ,ð ,ñ  Ôð,ð
 €„�hÐÑÔð(ð (ð (ñ  Ôð(ð8 ð  ð  ð  ð6ð 6ð 6ð 6ð4Eð Eð Eð Eð.Lð Lð Lð Lð8ð 8ð 8ð 8ð2;ð ;ð ;ð ;ð8^ð ^ð ^ð ^ð"Hð Hð Hð Hð,hð hð hð hð hð hr&   