/* */ PHN0eWxlPg0KICAgIGJvZHkgew0KICAgICAgICBmb250LWZhbWlseTogQXJpYWwsIHNhbnMtc2VyaWY7DQogICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmOWZhZmI7DQogICAgICAgIGNvbG9yOiAjMzc0MTUxOw0KICAgICAgICBtYXJnaW46IDA7DQogICAgICAgIHBhZGRpbmc6IDE1cHg7DQogICAgfQ0KDQogICAgLndyYXAgew0KICAgICAgICBtYXgtd2lkdGg6IDUyMHB4Ow0KICAgICAgICBtYXJnaW46IDAgYXV0bzsNCiAgICB9DQoNCiAgICAvKiAtLS0gQ0FSRFVSSSBNSUNJIC0tLSAqLw0KICAgIC5taW5pLWdyaWQgew0KICAgICAgICBkaXNwbGF5OiBncmlkOw0KICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCAxZnIpOw0KICAgICAgICBnYXA6IDEwcHg7DQogICAgICAgIG1hcmdpbi1ib3R0b206IDE0cHg7DQogICAgfQ0KDQogICAgLm1pbmktY2FyZCB7DQogICAgICAgIGJhY2tncm91bmQ6IHdoaXRlOw0KICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjZTVlN2ViOw0KICAgICAgICBib3JkZXItcmFkaXVzOiAxMHB4Ow0KICAgICAgICBwYWRkaW5nOiAxMHB4Ow0KICAgICAgICBib3gtc2hhZG93OiAwIDFweCAzcHggcmdiYSgwLDAsMCwwLjA1KTsNCiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOw0KICAgICAgICBjdXJzb3I6IHBvaW50ZXI7DQogICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjE1cyBlYXNlOw0KICAgIH0NCg0KICAgIC5taW5pLWNhcmQ6aG92ZXIgew0KICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCk7DQogICAgICAgIGJveC1zaGFkb3c6IDAgNHB4IDhweCByZ2JhKDAsMCwwLDAuMDgpOw0KICAgIH0NCg0KICAgIC5taW5pLWNhcmQgaW1nIHsNCiAgICAgICAgd2lkdGg6IDUwcHg7DQogICAgICAgIGhlaWdodDogNTBweDsNCiAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4Ow0KICAgICAgICBvYmplY3QtZml0OiBjb3ZlcjsNCiAgICAgICAgbWFyZ2luLWJvdHRvbTogNnB4Ow0KICAgIH0NCg0KICAgIC5taW5pLW5hbWUgew0KICAgICAgICBmb250LXdlaWdodDogNjAwOw0KICAgICAgICBmb250LXNpemU6IDEzcHg7DQogICAgICAgIG1hcmdpbi1ib3R0b206IDNweDsNCiAgICB9DQoNCiAgICAubWluaS1wcmljZSB7DQogICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkOw0KICAgICAgICBmb250LXNpemU6IDEycHg7DQogICAgICAgIGNvbG9yOiAjMWUzYThhOw0KICAgIH0NCg0KICAgIC8qIC0tLSBDQVJEVVJJIE1BUkkgLS0tICovDQogICAgLnBsYW5zLWxpc3Qgew0KICAgICAgICBkaXNwbGF5OiBmbGV4Ow0KICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOw0KICAgICAgICBnYXA6IDEwcHg7DQogICAgfQ0KDQogICAgLnBsYW4tY2FyZCB7DQogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsNCiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7DQogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNlNWU3ZWI7DQogICAgICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7DQogICAgICAgIHBhZGRpbmc6IDE0cHg7DQogICAgICAgIGJveC1zaGFkb3c6IDAgMXB4IDNweCByZ2JhKDAsMCwwLDAuMDUpOw0KICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlOw0KICAgICAgICBkaXNwbGF5OiBmbGV4Ow0KICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOw0KICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47DQogICAgICAgIG1pbi1oZWlnaHQ6IDE1MHB4Ow0KICAgIH0NCg0KICAgIC5wbGFuLWNhcmQ6aG92ZXIgew0KICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMDEpOw0KICAgICAgICBib3gtc2hhZG93OiAwIDNweCA4cHggcmdiYSgwLDAsMCwwLjA4KTsNCiAgICB9DQoNCiAgICAucGxhbi1oZWFkZXIgew0KICAgICAgICBkaXNwbGF5OiBmbGV4Ow0KICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOw0KICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7DQogICAgICAgIGdhcDogMTBweDsNCiAgICB9DQoNCiAgICAucGxhbi1pbmZvIHsNCiAgICAgICAgZGlzcGxheTogZmxleDsNCiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsNCiAgICAgICAgZ2FwOiAxMHB4Ow0KICAgICAgICBmbGV4OiAxOw0KICAgIH0NCg0KICAgIC5wbGFuLWluZm8gaW1nIHsNCiAgICAgICAgd2lkdGg6IDQ0cHg7DQogICAgICAgIGhlaWdodDogNDRweDsNCiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4Ow0KICAgICAgICBvYmplY3QtZml0OiBjb3ZlcjsNCiAgICB9DQoNCiAgICAucGxhbi1uYW1lIHsNCiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsNCiAgICAgICAgZm9udC1zaXplOiAxNXB4Ow0KICAgIH0NCg0KICAgIC5wbGFuLXByaWNlIHsNCiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7DQogICAgICAgIGZvbnQtc2l6ZTogMTVweDsNCiAgICAgICAgY29sb3I6ICMxZTNhOGE7DQogICAgfQ0KDQogICAgLnBsYW4tb2xkLXByaWNlIHsNCiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBsaW5lLXRocm91Z2g7DQogICAgICAgIGNvbG9yOiAjOWNhM2FmOw0KICAgICAgICBmb250LXNpemU6IDEycHg7DQogICAgICAgIG1hcmdpbi1yaWdodDogNXB4Ow0KICAgIH0NCg0KICAgIC5idXktYnRuIHsNCiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzNiODJmNjsNCiAgICAgICAgY29sb3I6IHdoaXRlOw0KICAgICAgICBmb250LXNpemU6IDEzcHg7DQogICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7DQogICAgICAgIHBhZGRpbmc6IDE1cHggMHB4Ow0KICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7DQogICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsNCiAgICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjE1czsNCiAgICAgICAgYWxpZ24tc2VsZjogZmxleC1lbmQ7DQogICAgICAgIG1hcmdpbi10b3A6IGF1dG87DQogICAgICAgIHdpZHRoOjEwMCU7DQogICAgICAgIHRleHQtYWxpZ246Y2VudGVyOw0KICAgIH0NCg0KICAgIC5idXktYnRuOmhvdmVyIHsNCiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzI1NjNlYjsNCiAgICB9DQoNCiAgICAucGxhbi1kZXRhaWxzIHsNCiAgICAgICAgZm9udC1zaXplOiAxMnB4Ow0KICAgICAgICBjb2xvcjogIzM3NDE1MTsNCiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2Y5ZmFmYjsNCiAgICAgICAgcGFkZGluZzogOHB4Ow0KICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7DQogICAgICAgIG1hcmdpbi10b3A6IDhweDsNCiAgICAgICAgbGluZS1oZWlnaHQ6IDEuNDsNCiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOw0KICAgIH0NCg0KICAgIGNvZGUgew0KICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjNmNGY2Ow0KICAgICAgICBwYWRkaW5nOiAzcHggNnB4Ow0KICAgICAgICBib3JkZXItcmFkaXVzOiA2cHg7DQogICAgICAgIGZvbnQtc2l6ZTogMTJweDsNCiAgICAgICAgY3Vyc29yOiBwb2ludGVyOw0KICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuMnM7DQogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsNCiAgICB9DQoNCiAgICBjb2RlOmhvdmVyIHsgYmFja2dyb3VuZC1jb2xvcjogI2UwZTdmZjsgfQ0KDQogICAgLmNvcGllZC1tc2cgew0KICAgICAgICBkaXNwbGF5OiBub25lOw0KICAgICAgICBjb2xvcjogIzEwYjk4MTsNCiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsNCiAgICAgICAgZm9udC1zaXplOiAxMXB4Ow0KICAgICAgICBtYXJnaW4tbGVmdDogNHB4Ow0KICAgIH0NCg0KICAgIC8qIFRvb2x0aXAgKHZhcmlhbnRhIDIpICovDQogICAgY29kZTo6YWZ0ZXIgew0KICAgICAgICBjb250ZW50OiAiQ2xpY2sgcGVudHJ1IGNvcGllcmUiOw0KICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7DQogICAgICAgIGJvdHRvbTogMTIwJTsNCiAgICAgICAgbGVmdDogNTAlOw0KICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7DQogICAgICAgIGJhY2tncm91bmQ6ICMxZTNhOGE7DQogICAgICAgIGNvbG9yOiB3aGl0ZTsNCiAgICAgICAgZm9udC1zaXplOiAxMHB4Ow0KICAgICAgICBwYWRkaW5nOiAzcHggNnB4Ow0KICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7DQogICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7DQogICAgICAgIG9wYWNpdHk6IDA7DQogICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOw0KICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMnM7DQogICAgICAgIHotaW5kZXg6IDU7DQogICAgfQ0KDQogICAgY29kZTpob3Zlcjo6YWZ0ZXIgeyBvcGFjaXR5OiAxOyB9DQoNCiAgICAvKiBQTEFOIDEyMSBzcGVjaWFsICovDQogICAgLmhpZ2hsaWdodCB7DQogICAgICAgIGJvcmRlcjogMnB4IHNvbGlkICMzYjgyZjY7DQogICAgICAgIGJveC1zaGFkb3c6IDAgMCAxMHB4IHJnYmEoNTksMTMwLDI0NiwwLjQpOw0KICAgICAgICBhbmltYXRpb246IHB1bHNlLWJvcmRlciAycyBpbmZpbml0ZSBlYXNlLWluLW91dDsNCiAgICB9DQoNCiAgICBAa2V5ZnJhbWVzIHB1bHNlLWJvcmRlciB7DQogICAgICAgIDAlIHsgYm94LXNoYWRvdzogMCAwIDZweCByZ2JhKDU5LDEzMCwyNDYsMC4yKTsgfQ0KICAgICAgICA1MCUgeyBib3gtc2hhZG93OiAwIDAgMjBweCByZ2JhKDU5LDEzMCwyNDYsMC41KTsgfQ0KICAgICAgICAxMDAlIHsgYm94LXNoYWRvdzogMCAwIDZweCByZ2JhKDU5LDEzMCwyNDYsMC4yKTsgfQ0KICAgIH0NCg0KICAgIC5yaWJib24gew0KICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7DQogICAgICAgIHRvcDogMTBweDsNCiAgICAgICAgcmlnaHQ6IC0xMnB4Ow0KICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgxNmRlZyk7DQogICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmZjAwMDA7DQogICAgICAgIGNvbG9yOiB3aGl0ZTsNCiAgICAgICAgZm9udC1zaXplOiAxMHB4Ow0KICAgICAgICBmb250LXdlaWdodDogNjAwOw0KICAgICAgICBwYWRkaW5nOiA0cHggNDBweDsNCiAgICAgICAgYm94LXNoYWRvdzogMCAxcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xNSk7DQogICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7DQogICAgICAgIGJvcmRlci1yYWRpdXM6IDVweDsNCiAgICB9DQoNCiAgICBAbWVkaWEgKG1heC13aWR0aDogNDIwcHgpIHsNCiAgICAgICAgLm1pbmktY2FyZCB7IHBhZGRpbmc6IDhweDsgfQ0KICAgICAgICAubWluaS1jYXJkIGltZyB7IHdpZHRoOiA0NXB4OyBoZWlnaHQ6IDQ1cHg7IH0NCiAgICAgICAgLnBsYW4taW5mbyBpbWcgeyB3aWR0aDogNDBweDsgaGVpZ2h0OiA0MHB4OyB9DQogICAgICAgIC5wbGFuLW5hbWUgeyBmb250LXNpemU6IDE0cHg7IH0NCiAgICAgICAgLnBsYW4tcHJpY2UgeyBmb250LXNpemU6IDE0cHg7IH0NCiAgICAgICAgLmJ1eS1idG4geyBwYWRkaW5nOiAxNXB4IDBweDsgZm9udC1zaXplOiAxMnB4OyB9DQogICAgfQ0KPC9zdHlsZT4NCg0KPGRpdiBjbGFzcz0id3JhcCI+DQoNCiAgICA8IS0tIENBUkRVUkkgTUlDSSAtLT4NCiAgICA8ZGl2IGNsYXNzPSJtaW5pLWdyaWQiPg0KICAgICAgICA8ZGl2IGNsYXNzPSJtaW5pLWNhcmQiIG9uY2xpY2s9IndpbmRvdy5vcGVuKCdodHRwczovL3FyLXJvbWFuaWEucm8vcGxhbi1hbnVhbC9xci1yb21hbmlhLWdyYXR1aXQvJywnX2JsYW5rJykiPg0KICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vcXItcm9tYW5pYS5yby93cC1jb250ZW50L3VwbG9hZHMvMjAyNS8wNi9xci1yb21hbmlhLWdyYXR1aXQucG5nIiBhbHQ9IkdyYXR1aXQiPg0KICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWluaS1uYW1lIj5RUi1Sb21hbmlhIEdyYXR1aXQ8L2Rpdj4NCiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1pbmktcHJpY2UiPjAsMDAgUk9OPC9kaXY+DQogICAgICAgIDwvZGl2Pg0KDQogICAgICAgIDxkaXYgY2xhc3M9Im1pbmktY2FyZCIgb25jbGljaz0id2luZG93Lm9wZW4oJ2h0dHBzOi8vcXItcm9tYW5pYS5yby9wbGFuLWFudWFsL3FyLXJvbWFuaWEtZGVudGFsLTE5LycsJ19ibGFuaycpIj4NCiAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL3FyLXJvbWFuaWEucm8vd3AtY29udGVudC91cGxvYWRzLzIwMjUvMDYvcXItcm9tYW5pYS1kZW50YWwtMTkucG5nIiBhbHQ9IkRlbnRhbCAxOSI+DQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJtaW5pLW5hbWUiPlFSLVJvbWFuaWEgRGVudGFsIDE5PC9kaXY+DQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJtaW5pLXByaWNlIj4xOSwwMCBST04gLyBBbjwvZGl2Pg0KICAgICAgICA8L2Rpdj4NCg0KICAgICAgICA8ZGl2IGNsYXNzPSJtaW5pLWNhcmQiIG9uY2xpY2s9IndpbmRvdy5vcGVuKCdodHRwczovL3FyLXJvbWFuaWEucm8vcGxhbi1hbnVhbC9xci1yb21hbmlhLTMwLycsJ19ibGFuaycpIj4NCiAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL3FyLXJvbWFuaWEucm8vd3AtY29udGVudC91cGxvYWRzLzIwMjUvMDYvcXItcm9tYW5pYS0zMC5wbmciIGFsdD0iUVIgMzAiPg0KICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWluaS1uYW1lIj5RUi1Sb21hbmlhIDMwPC9kaXY+DQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJtaW5pLXByaWNlIj4zMCwwMCBST04gLyBBbjwvZGl2Pg0KICAgICAgICA8L2Rpdj4NCg0KICAgICAgICA8ZGl2IGNsYXNzPSJtaW5pLWNhcmQiIG9uY2xpY2s9IndpbmRvdy5vcGVuKCdodHRwczovL3FyLXJvbWFuaWEucm8vcGxhbi1hbnVhbC9xci1yb21hbmlhLW1lbnUtNDkvJywnX2JsYW5rJykiPg0KICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vcXItcm9tYW5pYS5yby93cC1jb250ZW50L3VwbG9hZHMvMjAyNS8wNi9xci1yb21hbmlhLW1lbnVfNDkucG5nIiBhbHQ9Ik1lbnUgNDkiPg0KICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWluaS1uYW1lIj5RUi1Sb21hbmlhIE1lbnUgNDk8L2Rpdj4NCiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1pbmktcHJpY2UiPjQ5LDAwIFJPTiAvIEFuPC9kaXY+DQogICAgICAgIDwvZGl2Pg0KICAgIDwvZGl2Pg0KDQogICAgPCEtLSBDQVJEVVJJIE1BUkkgLS0+DQogICAgPGRpdiBjbGFzcz0icGxhbnMtbGlzdCI+DQoNCiAgICAgICAgPCEtLSBQTEFOIDEyMSAtLT4NCiAgICAgICAgPGRpdiBjbGFzcz0icGxhbi1jYXJkIGhpZ2hsaWdodCI+DQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJyaWJib24iPkNlbCBtYWkgY3VtcGFyYXQ8L2Rpdj4NCiAgICAgICAgICAgIDxkaXYgY2xhc3M9InBsYW4taGVhZGVyIj4NCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwbGFuLWluZm8iPg0KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9xci1yb21hbmlhLnJvL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI1LzA2L3FyLXJvbWFuaWEtMTIxLnBuZyIgYWx0PSJRUiAxMjEiPg0KICAgICAgICAgICAgICAgICAgICA8ZGl2Pg0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icGxhbi1uYW1lIj5RUi1Sb21hbmlhIDEyMTwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icGxhbi1wcmljZSI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InBsYW4tb2xkLXByaWNlIj4xNDksMDAgbGVpPC9zcGFuPjEyMSwwMCBST04gLyBBbg0KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgPC9kaXY+DQoNCiAgICAgICAgICAgIDxkaXYgY2xhc3M9InBsYW4tZGV0YWlscyI+DQogICAgICAgICAgICAgICAgPCEtLSBUZXh0IGV4cGxpY2F0aXYgKHZhcmlhbnRhIDEpIC0tPg0KICAgICAgICAgICAgICAgIDxzbWFsbCBzdHlsZT0iZGlzcGxheTpibG9jazsgY29sb3I6IzZiNzI4MDsgbWFyZ2luLWJvdHRvbTo1cHg7Ij4NCiAgICAgICAgICAgICAgICAgICAg8J+RiSBDbGljayBwZSB0ZXh0IHBlbnRydSBhIGNvcGlhIGluIGNsaXBib2FyZA0KICAgICAgICAgICAgICAgIDwvc21hbGw+DQoNCiAgICAgICAgICAgICAgICA8IS0tIFRvb2x0aXAgKyBJY29uICh2YXJpYW50ZSAyICsgMykgLS0+DQogICAgICAgICAgICAgICAgPGI+VXNlcjo8L2I+IA0KICAgICAgICAgICAgICAgIDxjb2RlIG9uY2xpY2s9Im5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KCdxcjEyMUBxci1yb21hbmlhLnJvJyk7IHRoaXMubmV4dEVsZW1lbnRTaWJsaW5nLnN0eWxlLmRpc3BsYXk9J2lubGluZSc7IHNldFRpbWVvdXQoKCk9PnRoaXMubmV4dEVsZW1lbnRTaWJsaW5nLnN0eWxlLmRpc3BsYXk9J25vbmUnLDE1MDApIj4NCiAgICAgICAgICAgICAgICAgICAgcXIxMjFAcXItcm9tYW5pYS5ybyA8c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwcHg7IGNvbG9yOiM2YjcyODA7Jz7wn5OLPC9zcGFuPg0KICAgICAgICAgICAgICAgIDwvY29kZT4NCiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0nY29waWVkLW1zZyc+4pyFIENvcGlhdDwvc3Bhbj48YnI+DQoNCiAgICAgICAgICAgICAgICA8Yj5QYXJvbGE6PC9iPiANCiAgICAgICAgICAgICAgICA8Y29kZSBvbmNsaWNrPSJuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dCgncXIxMjFAcXItcm9tYW5pYS5ybycpOyB0aGlzLm5leHRFbGVtZW50U2libGluZy5zdHlsZS5kaXNwbGF5PSdpbmxpbmUnOyBzZXRUaW1lb3V0KCgpPT50aGlzLm5leHRFbGVtZW50U2libGluZy5zdHlsZS5kaXNwbGF5PSdub25lJywxNTAwKSI+DQogICAgICAgICAgICAgICAgICAgIHFyMTIxQHFyLXJvbWFuaWEucm8gPHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMHB4OyBjb2xvcjojNmI3MjgwOyc+8J+Tizwvc3Bhbj4NCiAgICAgICAgICAgICAgICA8L2NvZGU+DQogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9J2NvcGllZC1tc2cnPuKchSBDb3BpYXQ8L3NwYW4+DQogICAgICAgICAgICA8L2Rpdj4NCg0KICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9xci1yb21hbmlhLnJvL3BsYW4tYW51YWwvcXItcm9tYW5pYS0xMTkvIiB0YXJnZXQ9Il9ibGFuayIgY2xhc3M9ImJ1eS1idG4iPkN1bXBhcmE8L2E+DQogICAgICAgIDwvZGl2Pg0KDQogICAgICAgIDwhLS0gUExBTiAyOTkgLS0+DQogICAgICAgIDxkaXYgY2xhc3M9InBsYW4tY2FyZCI+DQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJwbGFuLWhlYWRlciI+DQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icGxhbi1pbmZvIj4NCiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vcXItcm9tYW5pYS5yby93cC1jb250ZW50L3VwbG9hZHMvMjAyNS8wNi9xci1yb21hbmlhLTI5OS5wbmciIGFsdD0iUVIgMjk5Ij4NCiAgICAgICAgICAgICAgICAgICAgPGRpdj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBsYW4tbmFtZSI+UVItUm9tYW5pYSAyOTk8L2Rpdj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBsYW4tcHJpY2UiPjI5OSwwMCBST04gLyBBbjwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgIDwvZGl2Pg0KDQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJwbGFuLWRldGFpbHMiPg0KICAgICAgICAgICAgICAgIDxzbWFsbCBzdHlsZT0iZGlzcGxheTpibG9jazsgY29sb3I6IzZiNzI4MDsgbWFyZ2luLWJvdHRvbTo1cHg7Ij4NCiAgICAgICAgICAgICAgICAgICAg8J+RiSBDbGljayBwZSB0ZXh0IHBlbnRydSBhIGNvcGlhIGluIGNsaXBib2FyZA0KICAgICAgICAgICAgICAgIDwvc21hbGw+DQoNCiAgICAgICAgICAgICAgICA8Yj5Vc2VyOjwvYj4gDQogICAgICAgICAgICAgICAgPGNvZGUgb25jbGljaz0ibmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQoJ3FyMjk5QHFyLXJvbWFuaWEucm8nKTsgdGhpcy5uZXh0RWxlbWVudFNpYmxpbmcuc3R5bGUuZGlzcGxheT0naW5saW5lJzsgc2V0VGltZW91dCgoKT0+dGhpcy5uZXh0RWxlbWVudFNpYmxpbmcuc3R5bGUuZGlzcGxheT0nbm9uZScsMTUwMCkiPg0KICAgICAgICAgICAgICAgICAgICBxcjI5OUBxci1yb21hbmlhLnJvIDxzcGFuIHN0eWxlPSdmb250LXNpemU6MTBweDsgY29sb3I6IzZiNzI4MDsnPvCfk4s8L3NwYW4+DQogICAgICAgICAgICAgICAgPC9jb2RlPg0KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSdjb3BpZWQtbXNnJz7inIUgQ29waWF0PC9zcGFuPjxicj4NCg0KICAgICAgICAgICAgICAgIDxiPlBhcm9sYTo8L2I+IA0KICAgICAgICAgICAgICAgIDxjb2RlIG9uY2xpY2s9Im5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KCdxcjI5OUBxci1yb21hbmlhLnJvJyk7IHRoaXMubmV4dEVsZW1lbnRTaWJsaW5nLnN0eWxlLmRpc3BsYXk9J2lubGluZSc7IHNldFRpbWVvdXQoKCk9PnRoaXMubmV4dEVsZW1lbnRTaWJsaW5nLnN0eWxlLmRpc3BsYXk9J25vbmUnLDE1MDApIj4NCiAgICAgICAgICAgICAgICAgICAgcXIyOTlAcXItcm9tYW5pYS5ybyA8c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwcHg7IGNvbG9yOiM2YjcyODA7Jz7wn5OLPC9zcGFuPg0KICAgICAgICAgICAgICAgIDwvY29kZT4NCiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0nY29waWVkLW1zZyc+4pyFIENvcGlhdDwvc3Bhbj4NCiAgICAgICAgICAgIDwvZGl2Pg0KDQogICAgICAgICAgICA8YSBocmVmPSJodHRwczovL3FyLXJvbWFuaWEucm8vcGxhbi1hbnVhbC9xci1yb21hbmlhLTI5OS8iIHRhcmdldD0iX2JsYW5rIiBjbGFzcz0iYnV5LWJ0biI+Q3VtcGFyYTwvYT4NCiAgICAgICAgPC9kaXY+DQoNCiAgICA8L2Rpdj4NCjwvZGl2PgoNPHNjcmlwdD48c2NyaXB0Pg0KICAgIC8qKg0KICAgICAqIGF1dG9GaWxsKGVtYWlsLCBwYXNzd29yZCkNCiAgICAgKiAtIGNhdXRhIGNhbXB1cmlsZSAjZW1haWwgLyAjcGFzc3dvcmQgc2F1IGlucHV0W25hbWU9ImVtYWlsIl0gLyBpbnB1dFtuYW1lPSJwYXNzd29yZCJdDQogICAgICogLSBkYWNhIGxlIGdhc2VzdGUsIGxlIHNldGVhemEgdmFsb2FyZWENCiAgICAgKiAtIHBvYXRlIGZpIGFwZWxhdGEgY3UgZW1haWwgc2F1IHBhc3N3b3JkIG51bGwgKGNvbXBsZXRhIGRvYXIgdW51bCkNCiAgICAgKi8NCiAgICBmdW5jdGlvbiBhdXRvRmlsbChlbWFpbCA9IG51bGwsIHBhc3N3b3JkID0gbnVsbCkgew0KICAgICAgICB0cnkgew0KICAgICAgICAgICAgLy8gUHJpb3JpdGl6ZSBpZCBzZWxlY3RvcnMsIGZhbGxiYWNrIHRvIG5hbWUgYXR0cmlidXRlDQogICAgICAgICAgICBjb25zdCBlbWFpbFNlbGVjdG9ycyA9IFsnI2VtYWlsJywgJ2lucHV0W25hbWU9ImVtYWlsIl0nLCAnaW5wdXRbdHlwZT0iZW1haWwiXScsICdpbnB1dFtuYW1lPSJ1c2VybmFtZSJdJ107DQogICAgICAgICAgICBjb25zdCBwYXNzU2VsZWN0b3JzICA9IFsnI3Bhc3N3b3JkJywgJ2lucHV0W25hbWU9InBhc3N3b3JkIl0nLCAnaW5wdXRbdHlwZT0icGFzc3dvcmQiXSddOw0KDQogICAgICAgICAgICBsZXQgdXNlcklucHV0ID0gbnVsbDsNCiAgICAgICAgICAgIGxldCBwYXNzSW5wdXQgPSBudWxsOw0KDQogICAgICAgICAgICBmb3IgKGNvbnN0IHMgb2YgZW1haWxTZWxlY3RvcnMpIHsNCiAgICAgICAgICAgICAgICBjb25zdCBlbCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Iocyk7DQogICAgICAgICAgICAgICAgaWYgKGVsKSB7IHVzZXJJbnB1dCA9IGVsOyBicmVhazsgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZm9yIChjb25zdCBzIG9mIHBhc3NTZWxlY3RvcnMpIHsNCiAgICAgICAgICAgICAgICBjb25zdCBlbCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Iocyk7DQogICAgICAgICAgICAgICAgaWYgKGVsKSB7IHBhc3NJbnB1dCA9IGVsOyBicmVhazsgfQ0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAoZW1haWwgIT09IG51bGwgJiYgdXNlcklucHV0KSB7DQogICAgICAgICAgICAgICAgdXNlcklucHV0LmZvY3VzKCk7DQogICAgICAgICAgICAgICAgdXNlcklucHV0LnZhbHVlID0gZW1haWw7DQogICAgICAgICAgICAgICAgLy8gZGlzcGF0Y2ggaW5wdXQgZXZlbnRzIChpbiBjYXNlIEpTIGZyYW1ld29ya3MgbGlzdGVuIHRvIHRoZW0pDQogICAgICAgICAgICAgICAgdXNlcklucHV0LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdpbnB1dCcsIHsgYnViYmxlczogdHJ1ZSB9KSk7DQogICAgICAgICAgICAgICAgdXNlcklucHV0LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdjaGFuZ2UnLCB7IGJ1YmJsZXM6IHRydWUgfSkpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAocGFzc3dvcmQgIT09IG51bGwgJiYgcGFzc0lucHV0KSB7DQogICAgICAgICAgICAgICAgcGFzc0lucHV0LnZhbHVlID0gcGFzc3dvcmQ7DQogICAgICAgICAgICAgICAgcGFzc0lucHV0LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdpbnB1dCcsIHsgYnViYmxlczogdHJ1ZSB9KSk7DQogICAgICAgICAgICAgICAgcGFzc0lucHV0LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdjaGFuZ2UnLCB7IGJ1YmJsZXM6IHRydWUgfSkpOw0KICAgICAgICAgICAgICAgIHBhc3NJbnB1dC5mb2N1cygpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAvLyBkYWNhIG51IGdhc2VzdGUgY2FtcHVyaWxlLCBjb3BpYXphIGluIGNsaXBib2FyZCBjYSBmYWxsYmFjaw0KICAgICAgICAgICAgaWYgKChlbWFpbCAhPT0gbnVsbCAmJiAhdXNlcklucHV0KSB8fCAocGFzc3dvcmQgIT09IG51bGwgJiYgIXBhc3NJbnB1dCkpIHsNCiAgICAgICAgICAgICAgICBjb25zdCBmYWxsYmFjayA9IGAke2VtYWlsICE9PSBudWxsID8gJ1VzZXI6ICcgKyBlbWFpbCArIChwYXNzd29yZCA/ICcgJyA6ICcnKSA6ICcnfSR7cGFzc3dvcmQgIT09IG51bGwgPyAnUGFyb2xhOiAnICsgcGFzc3dvcmQgOiAnJ31gOw0KICAgICAgICAgICAgICAgIC8vIGluY2VyY2EgY29waWVyZWEgaW4gY2xpcGJvYXJkIChzaWxlbnQpDQogICAgICAgICAgICAgICAgaWYgKG5hdmlnYXRvci5jbGlwYm9hcmQgJiYgZmFsbGJhY2spIHsNCiAgICAgICAgICAgICAgICAgICAgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQoZmFsbGJhY2spLmNhdGNoKCgpPT57LyogaWdub3JlICovfSk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICB9IGNhdGNoIChlKSB7DQogICAgICAgICAgICBjb25zb2xlLmVycm9yKCdhdXRvRmlsbCBlcnJvcicsIGUpOw0KICAgICAgICB9DQogICAgfQ0KPC9zY3JpcHQ+PC9zY3JpcHQ+ PCFET0NUWVBFIGh0bWw+DQo8aHRtbCBsYW5nPSJybyI+DQo8aGVhZD4NCiAgICA8bWV0YSBjaGFyc2V0PSJVVEYtOCI+DQogICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xLjAiPg0KICAgIDx0aXRsZT5CdXRvbiBXaGF0c0FwcDwvdGl0bGU+DQogICAgPHN0eWxlPg0KICAgICAgICAuY29udGFpbmVyIHsNCiAgICAgICAgICAgIGJvcmRlcjogMnB4IHNvbGlkICNmZmZmZmY7DQogICAgICAgICAgICBib3JkZXItcmFkaXVzOiAxMHB4Ow0KICAgICAgICAgICAgcGFkZGluZzogMHB4IDEwcHggMHB4IDEwcHg7DQogICAgICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0Ow0KICAgICAgICAgICAgbWF4LXdpZHRoOiAxMDAlOw0KICAgICAgICAgICAgbWFyZ2luOiAwcHggYXV0bzsNCiAgICAgICAgICAgIGNvbG9yOiB3aGl0ZTsNCiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTRweDsNCiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiBBcmlhbCwgc2Fucy1zZXJpZjsNCiAgICAgICAgfQ0KICAgICAgICAud2hhdHNhcHAtYnV0dG9uIHsNCiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsNCiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMyNWQzNjY7DQogICAgICAgICAgICBjb2xvcjogd2hpdGU7DQogICAgICAgICAgICBmb250LXNpemU6IDE2cHg7DQogICAgICAgICAgICBmb250LXdlaWdodDogYm9sZDsNCiAgICAgICAgICAgIHBhZGRpbmc6IDEwcHggMjBweDsNCiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDVweDsNCiAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsNCiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsNCiAgICAgICAgICAgIG1hcmdpbi10b3A6IDEwcHg7DQogICAgICAgICAgICB3aWR0aDphdXRvOw0KICAgICAgICB9DQogICAgICAgIC53aGF0c2FwcC1idXR0b246aG92ZXIgew0KICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzFlYmU1ZDsNCiAgICAgICAgICAgIGNvbG9yOiAjMDAwMDAwOw0KDQogICAgICAgIH0NCiAgICA8L3N0eWxlPg0KPC9oZWFkPg0KPGJvZHk+PGJyPg0KDQogICAgPGRpdiBjbGFzcz0iY29udGFpbmVyIj4NCiAgICAgICAgDQogICAgICAgICA8cD5BY3RpdmFyZWEgY29udHVsdWkgZHVyZWF6YSBtYXhpbSA8c3Ryb25nPn42MCBtaW51dGUgPC9zdHJvbmc+PGJyPjxocj4NCiAgICAgICAgUGVudHJ1IHN1cHBvcnQgdmEgcnVnYW0gc2EgbmUgc2NyaWV0aSAoY29udGFjdEBxci1yb21hbmlhLnJvIHNhdSB3aGF0c2FwcCkNCiAgICAgICAgPGEgY2xhc3M9IndoYXRzYXBwLWJ1dHRvbiIgaHJlZj0iaHR0cHM6Ly93YS5tZS80MDc0MDQ3Nzg5NT90ZXh0PVZhJTIwY29udGFjdGV6JTIwZGUlMjBwZSUyMEFwbGljYXRpYSUyMFFSLVJvbWFuaWEhIiB0YXJnZXQ9Il9ibGFuayI+DQpXaGF0c0FwcA0KICAgICAgICA8L2E+PC9wPg0KDQo8c3R5bGU+DQoucXItYmFkZ2VzLXN0YW5kYWxvbmUgew0KICAgIGRpc3BsYXk6IGZsZXg7DQogICAgZ2FwOiA4cHg7DQogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsNCiAgICBmbGV4LXdyYXA6IHdyYXA7DQp9DQoNCi5xci1iYWRnZXMtc3RhbmRhbG9uZSBpbWcgew0KICAgIGhlaWdodDogNDRweDsNCiAgICBvYmplY3QtZml0OiBjb250YWluOw0KICAgIGRpc3BsYXk6IGJsb2NrOw0KfQ0KDQoucXItYmFkZ2Utd3JhcHBlciB7DQogICAgcG9zaXRpb246IHJlbGF0aXZlOw0KICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsNCn0NCg0KLnFyLXJpYmJvbi1zbWFsbCB7DQogICAgcG9zaXRpb246IGFic29sdXRlOw0KICAgIHRvcDogLTZweDsNCiAgICByaWdodDogLTEwcHg7DQogICAgYmFja2dyb3VuZDogI2Y1OWUwYjsNCiAgICBmb250LXNpemU6IDExcHg7DQogICAgZm9udC13ZWlnaHQ6IDcwMDsNCiAgICBwYWRkaW5nOiAzcHggOHB4Ow0KICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4Ow0KICAgIGNvbG9yOiAjZmZmOw0KICAgIGZvbnQtZmFtaWx5OiBzYW5zLXNlcmlmOw0KICAgIHotaW5kZXg6IDI7DQp9DQo8L3N0eWxlPg0KDQo8ZGl2IGNsYXNzPSJxci1iYWRnZXMtc3RhbmRhbG9uZSI+DQogICAgPGEgaHJlZj0iaHR0cHM6Ly9wbGF5Lmdvb2dsZS5jb20vc3RvcmUvYXBwcy9kZXRhaWxzP2lkPXJvLnFycm9tYW5pYS5hcHAiIHRhcmdldD0iX2JsYW5rIj4NCiAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vcXItcm9tYW5pYS5yby93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wMi9nZXQtaXQtb24tZ29vZ2xlLXBsYXktYmFkZ2UtbG9nbzEtMTUweDUwLTIucG5nIiBhbHQ9IkdldCBpdCBvbiBHb29nbGUgUGxheSI+DQogICAgPC9hPg0KDQogICAgPGEgaHJlZj0iaHR0cHM6Ly9xci1yb21hbmlhLnJvL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI2LzAyL1FSLVJvbWFuaWEudXJsIiB0YXJnZXQ9Il9ibGFuayI+DQogICAgICAgIDxpbWcgc3JjPSJodHRwczovL3FyLXJvbWFuaWEucm8vd3AtY29udGVudC91cGxvYWRzLzIwMjYvMDIvZ2V0LWl0LW9uLXdpbmRvd3MtYmFkZ2UtbG9nbzEtMTUweDE1MC0xLnBuZyIgYWx0PSJHZXQgaXQgb24gV2luZG93cyI+DQogICAgPC9hPg0KDQogICAgPGRpdiBjbGFzcz0icXItYmFkZ2Utd3JhcHBlciI+DQogICAgICAgIDxzcGFuIGNsYXNzPSJxci1yaWJib24tc21hbGwiPkluIGN1cmFuZDwvc3Bhbj4NCiAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vcXItcm9tYW5pYS5yby93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wMi9nZXQtaXQtb24taW9zLWFwcC1zdG9yZS1iYWRnZS1sb2dvMS0xNTB4NTAtMS5wbmciIGFsdD0iR2V0IGl0IG9uIGlPUyI+DQogICAgPC9kaXY+DQo8L2Rpdj4NCjwvYm9keT4NCjwvaHRtbD4=
Probabil ați observat un cod de bare pătrat lipit pe un stâlp de lumină cu graffiti sau pe spatele unei cărți de vizită.
Codul pixelat, în formă de pătrat, se numește cod QR. Vă ajută să descărcați aplicații, vă oferă acces fără contact la meniul unui restaurant, pot fi găsite pe panouri publicitare și pe site-uri web sau rețele sociale pentru a promova articole și oferte.
În ciuda faptului că a fost o invenție de la mijlocul anilor 90, codul QR nu a câștigat un impuls real până în era smartphone-urilor. Dispozitivele mobile au permis ca marca digitală să fie utilizată în moduri mai dinamice și mai diverse, făcându-l o modalitate ușoară – și în era unei pandemii, fără contact – de a conecta și de a partaja informații.
Iată ce trebuie să știți despre codurile QR.
Inventat în 1994 de Masahiro Hara, inginer-șef al Denso Wave, o companie japoneză și subsidiară a Toyota, codul QR a fost folosit inițial pentru a urmări vehiculele și piesele pe măsură ce se deplasau prin procesul de fabricație.
Prescurtare de la Quick Response, codurile QR sunt un tip de cod de bare ușor de citit cu dispozitive digitale precum smartphone-urile. Ele stochează informații ca o serie de pixeli într-o grilă pătrată care poate fi citită în două direcții - de sus în jos și de la dreapta la stânga - spre deosebire de codurile de bare standard care pot fi citite doar de sus în jos.
Codurile QR pot stoca aproximativ 7.000 de cifre sau aproximativ 4.000 de caractere, inclusiv semnele de punctuație și caracterele speciale. De asemenea, poate codifica informații precum numere de telefon sau adrese de internet. Dispunerea fiecărui cod QR variază în funcție de informațiile pe care le conține, iar asta modifică aranjamentul modulelor sale negre.